多態:同一事件發生在不同對象身上的效果.? 父類引用指向子類對象
例如:
package listen;
public class test1 {
//同一事件發生在不同對象身上產生的結果
public static void main(String[] args) {
//創建貓狗對象
Animal d = new Dog();
d.name = "大黃";
d.eat(d);
//多態實現前提:繼承,重寫,父類引用指向子類對象
if(d instanceof Dog){
System.out.println("這是一個狗狗對象");
Dog g = (Dog)d;
g.lookHome(g);
}else{
System.out.println("這是對象不是狗狗對象");
}
}
}
abstract class Animal{
public String name;
public abstract void eat(Animal a);
}
class Dog extends Animal{
@Override
public void eat(Animal a) {
// TODO Auto-generated method stub
System.out.println("我說一只狗,我叫"+this.name+"我愛吃骨頭");
}
public void lookHome(Dog g){
System.out.println("我正在看家");
}
}
class Cat extends Animal{
@Override
public void eat(Animal a) {
System.out.println("我是一只小貓,我叫"+this.name+"我愛吃魚");
}
}
多態:1.必須有繼承? 2.父類引用指向子類對象\
強制轉換類型:Animal a = new Cat();
interfaceof判斷a的真實類型是不是Cat? Cat c = (Cat)a;???? 判斷一個對象真實類型
if (a instanceof Cat) {
System.out.println("貓類");
Cat c = (Cat)a;//強制類型轉換
c.sleep();
}