1多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
2.多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。
3.作用: 多态的存在提高了程序的扩展性和后期可维护性
4.好处:
提高了代码的扩展性,前期定义的代码可以使用后期的内容。
5.弊端:
前期定义的内容不能使用(调用)后期子类的特有内容。
6. 多态时,成员的特点:
1.成员变量
编译时:参考引用型变量所属的类中是否有调用的成员变量。有,编译通过,没有,编译失败。
运行时:参考引用型变量所属的类中是否有调用的成员变量,并运行该所属类中的成员变量。
简单说:编译和运行都参考等号的左边。
2.成员函数(非静态)
编译时:参考引用型变量所属的类中是否有调用的函数。有,编译通过。没有,编译失败。
运行时:参考的是对象所属的类中是否有调用的函数。简单说:编译看左边,运行看右边。
3.静态函数
编译时:参考的是对象所属的类中是否有调用的函数。
运行时:参考的是对象所属的类中是否有调用的函数。
简单说:编译和运行看左边。
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.静态函数
编译时:参考的是对象所属的类中是否有调用的函数。
运行时:参考的是对象所属的类中是否有调用的函数。
简单说:编译和运行看左边。