多态:同一事件发生在不同对象身上的效果. 父类引用指向子类对象
例如:
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();
}