多态&抽象类&接口

1.多态的使用方式
父类引用指向子类对象 (同一类型的对象引用指向了不同类型的子类对象,具体方法的实现不同)
调用的方法需要是子类和父类都有的,但是执行的是子类的,就是执行医生类覆盖的(重写的)eat方法
也就是所谓的:编译看左边,执行看右边!
 
能够调用什么方法,取决于引用的类型,而方法中具体怎么执行,要看被转型的类具体实现
 
person p = new doctor();
 
p.方法()
当调用不同参数的方法的时候,有限类型更符合的方法进行调用。
而无论这个方法是继承的还是本类所有的。
 
1、在多态中成员函数的特点:
在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有编译失败。
在运行时期:参阅对象所属的类中是否有调用的方法。
简单总结就是:成员函数在多态调用时,编译看左边,运行看右边。
 
 
在多态中,成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)。
 
 
在多态中,静态成员函数的特点:
无论编译和运行,都参考做左边。
 
也就是说,向上转型之后,调用方法只能够调用父类中有的,而实现的时候,要去实现子类的方法体。
2.关键字instanceof的使用
     接收父类类型的参数,判断之后向下转型,进行具体的方法调用
 
3.多态方法和成员调用的区别
4.多态类型转型问题
 
5.抽象类
       1)抽象方法必须为public或者protected(因为如果为private,final,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
 
  2)抽象类不能用来创建对象;
 
  3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。
6.接口
     抽象类定义对象属性规范,而接口定义的是对象的行为,一个接口可以继承其他接口,目的是实现其他接口中抽象方法的整合。
     一个类实现了这样的接口之后,就必须实现这个接口的所有抽象方法和这个接口过的所有实现的抽象方法。
     一个类实现一个接口后,可以利用多态的方式进行创建对象,
     例如:接口类型 对象名 =new 实现类类型();
     
     这种多态的方式和继承一样,调用的方法要看这个队形引用被修饰成什么类型,从而只能调用这个类型,也就是这个接口所具有的方法
 
 
 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(zxy.hope@gmail.com)咨询.
原文地址:https://www.cnblogs.com/anzhi/p/7443512.html