java基础(二十四)多态

本文参考自: 原文地址

在java中一个对象有多种形态存在,叫做多态
例如:   
class animal{}
class cat extend animal{}
表现形式
animal x=mew Cat();
x  这类事物既具备猫额形态,又具备动物形态。
这就是对象的多态
简单的说:就是一个对象对应着不同类型
多态在代码中的体现:
父类或者接口的引用指向子类对象
多态的好处:
    提高了代码的扩展性,前期定义的代码可以使用后期的内容(后期维护)
多态的弊端:
    前期定义的内容不能使用后期子类的特有内容。
多态的前提:
     1.必须有关系,继承,实现。
     2.要有覆盖    
向下转型
Animal a =new Cat();
Cat c=(Cat)a;
向下转型可以使用子类的特有功能
多态形式不能调用子类的特有功能
如 
  class Animal {
        void speak();
void eat();
}
class Cat extends Animal{
void speak();
void catchMouse();
}
Animal a=new Cat();
那么a可以调用的方法有 
a.speak(),a.eat()而不能用catchMouse();
需要向下转型才能使用catchMouse();
但是此时如果调用speak()方法,那么调用的将是Cat的speak();
判断对象的具体类型,只能用于引用数据类型判断
public static void method(Animal a){
   a.eat(); 
   if(a instanceof Cat){
Cat c=(Cat)a;
e.catchMouse();
}
}
【多态中的变量】
class Fu{
   int num = 3;
}
class Zi extends Fu{
int num=4;
}
class DuoTaiDemo{
public static void main(String []args){
Fu f=new Zi();
System.out.println(f.num);
}

}
打印的是3
【多态中的函数】
当子类和父类的方法名一样时
多态调用的是子类的函数
如;
class Fu {
show(){
}
}
class Zi extends Fu{
show();
}
Fu x=new Zi();
x.show();
此时,调用的是zi类的show()方法
如果函数是静态函数时:
则调用的是父类的方法




猜你喜欢

转载自blog.csdn.net/running987/article/details/81626653