------- android培训、java培训、期待与您交流! ----------
多态:多种形态
1对象的多态性(类型提升,子类对象为父类型)(提升的好处:提高了扩展性,隐藏子类型。提升的局限性:只能使用父类中的方法。如果子类有覆盖的话,运行的事子类的内容)
class 猫 extends 动物{}
class 动物{}
猫 cat=new 猫();
动物 cat=new 猫();(猫这个实例具备着两种形态,一个是猫另一个是动物。这就是多态性)
多态在程序中的体现:父类或者接口的引用指向了自己的子类对象。(父类型指向子类的对象)
2.多态的前提:
(1)必须有继承或者实现的关系
(2)通常都有覆盖的操作
3.多态的好处:提高了程序的扩展性,在思想上也有不同,以前是面对一个对象调用,对象多了调用麻烦。
相当于指挥一批对象做事情,将复杂的事情简单化。
多态的弊端:多态的出现,虽然可以让前期的程序使用后期的内容。
不可以使用子类的特有内容。
注意:对于子父类类型转换动作,自始至终都是子类对象在做类型的转换而已。
4.向下转型需要注意:父类型向下转成子类型,因为子类型不唯一,所以需要进行判断。
用到的关键字是 instanceof:对象 instanceof 类型
Animal an=new Cat();
if(an instanceof Cat)
{
Cat c=(Cat)an;
c.猫中特有的方法;
}else if(an instanceof Dog)
{
Dog d=(Dog)an;
d.狗中特有的方法;
}
5.多态中的特点:
(1)成员变量:多态调用时,对于成员变量,无论是编译还是运行,结果只参考引用型变量所属的类中的成员变量。(参考等号左边)
(2)成员函数:多态调用时,对于成员函数,编译时参考引用型变量所属类中是否有被调用的方法,有,编译通过,没有,
编译失败。运行时,参考的事对象所属的类中是否有调用的方法。(编译看左边,运行看右边)
(3)静态函数:多态调用时,编译和运行都看左边。
六、Object:所有类的超类
所有对象都具备的方法定义在该类中