1多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
2.多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。
3.作用: 多态的存在提高了程序的扩展性和后期可维护性
4.好处:
提高了代码的扩展性,前期定义的代码可以使用后期的内容。
5.弊端:
前期定义的内容不能使用(调用)后期子类的特有内容。
多态毕老师金典代码:
- /*
- 02. 毕老师和毕姥爷的故事
- 03. */
- 04. class 毕姥爷{
- 05. void 讲课(){
- 06. System.out.println("管理");
- 07. }
- 08. void 钓鱼(){
- 09. System.out.println("钓鱼");
- 10. }
- 11. }
- 12.
- 13. class 毕老师 extends 毕姥爷{
- 14. void 讲课(){
- 15. System.out.println("Java");
- 16. }
- 17. void 看电影(){
- 18. System.out.println("看电影");
- 19. }
- 20. }
- 21.
- 22. class DuoTaiDemo{
- 23. public static void main(String[] args){
- 24. 毕老师 x = new 毕老师();
- 25. x.讲课(); //Java
- 26. x.看电影(); //看电影
- 27.
- 28. 毕姥爷 y = new 毕老师();
- 29. y.讲课(); //Java
- 30. y.钓鱼(); //钓鱼
- 31.
- 32. 毕老师 z = (毕老师)y;
- 33. z.看电影(); //看电影
- 34. }
- 35. }
复制代码
6. 多态时,成员的特点:
1.成员变量
编译时:参考引用型变量所属的类中是否有调用的成员变量。有,编译通过,没有,编译失败。
运行时:参考引用型变量所属的类中是否有调用的成员变量,并运行该所属类中的成员变量。
简单说:编译和运行都参考等号的左边。
2.成员函数(非静态)
编译时:参考引用型变量所属的类中是否有调用的函数。有,编译通过。没有,编译失败。
运行时:参考的是对象所属的类中是否有调用的函数。简单说:编译看左边,运行看右边。
3.静态函数
编译时:参考的是对象所属的类中是否有调用的函数。
运行时:参考的是对象所属的类中是否有调用的函数。
简单说:编译和运行看左边。
|
|