A:案例分析 通过该案例帮助学生理解多态的现象class Demo3_SuperMan { public static void main(String[] args) { // 父 子 Person p = new SuperMan(); //父类引用指向子类对象,超人提升为了人 //父类引用指向子类对象就是向上转型 System.out.println(p.name); p.谈生意(); //p.fly(); SuperMan sm = (SuperMan)p;// 穿上老爹衣服的儿子,把衣服脱掉,又变回了儿子 sm.fly(); /* 基本数据类型自动类型提升和强制类型转换 */ int i = 10; byte b = 20; //i = b; //自动类型提升 //b = (byte)i; //强制类型转换 }}class Person { String name = "John"; public void 谈生意() { System.out.println("谈生意"); }}class SuperMan extends Person { String name = "superMan"; public void 谈生意() { System.out.println("谈几个亿的大单子"); } public void fly() { System.out.println("飞出去救人"); }}
09.06_面向对象(多态中向上转型和向下转型)
A:案例演示 详细讲解多态中向上转型和向下转型 Person p = new SuperMan();向上转型 SuperMan sm = (SuperMan)p;向下转型
09.07_面向对象(多态的好处和弊端)
A:多态的好处 a:提高了代码的维护性(继承保证)b:提高了代码的扩展性(由多态保证)B:案例演示 多态的好处可以当作形式参数,可以接收任意子类对象C:多态的弊端 不能使用子类的特有属性和行为。D:案例演示 method(Animal a) method(Cat c)
09.08_面向对象(多态中的题目分析题)
A:看下面程序是否有问题,如果没有,说出结果class Fu { public void show() { System.out.println("fu show"); }}class Zi extends Fu { public void show() { System.out.println("zi show"); } public void method() { System.out.println("zi method"); }}class Test1Demo { public static void main(String[] args) { Fu f = new Zi(); f.method(); f.show(); }}B:看下面程序是否有问题,如果没有,说出结果class A { public void show() { show2(); } public void show2() { System.out.println("我"); }}class B extends A { public void show2() { System.out.println("爱"); }}class C extends B { public void show() { super.show(); } public void show2() { System.out.println("你"); }}public class Test2DuoTai { public static void main(String[] args) { A a = new B(); a.show(); B b = new C(); b.show(); }}