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 }