Lesson_9 上课笔记 多态

2013-01-19  Lesson_9 多态

 1 /***********************************************************
 2  *                 Lesson_9
 3  *                 
 4  *                   多态
 5  *                 2013-01-19
 6  *              note by CocoonFan
 7  * *********************************************************
 8  * *********************************************************
 9  *
10  *     一.方法的覆盖 -- 多态
11  *       1.前提:一定要有继承
12  *       2.子类的方法和父类的方法名相同,参数不同就构成方法的重载
13  *    3.如果子类的方法和父类的方法完全一样就构成了方法的覆盖(override)
14  *    4.父类引用指向子类对象,即父类对象调用子类"覆盖"的方法(多态)
15  *
16  * *********************************************************/
17 
18 public class Lesson_9 {
19     public static void main(String[] args) {
20         ParentClass parentClass = new ParentClass();
21         parentClass.fun();//输出:这是父类的方法。
22         
23         ChildClass childClass = new ChildClass();
24         //如果子类中有自己的方法则调用自己的相应的方法,没有则调用父类的
25         childClass.fun();//输出:这是子类的方法。
26         //childClass.showChildInfo();
27         
28         //所有的经理都是员工,但是不是所有的员工都是经理
29         //父类引用调用子类对象,即父类对象调用子类覆盖过的方法
30         //ChildClass childClass2 =new ParentClass();//出错!
31         ParentClass parentClass2 = new ChildClass();
32         parentClass2.fun();//输出:这是子类的方法。
33         parentClass2.showParentInfo();//仍然可以调用父类中没有被覆盖的方法
34         //parentClass2.showChildtInfo();//错误:调用子类没有覆盖的方法会出错
35         
36     }
37 }
38 
39 class ParentClass{
40     public void fun(){
41         System.out.println("这是父类的fun方法。");
42     }
43     public void showParentInfo(){
44         System.out.println("我是父亲");
45     }
46     
47 }
48 class ChildClass extends ParentClass{
49     
50     @Override
51     public void fun(){//子类的方法覆盖父类的方法
52         System.out.println("这是子类的fun方法。");
53     }
54     
55     public void showChildInfo(){
56         //super.fun();//调用父类的方法
57         //this.fun();//调用子类的方法
58         System.out.println("我是儿子");
59     }
60 }
原文地址:https://www.cnblogs.com/CocoonFan/p/2869154.html