标签:
1: 猫狗案例
/* 多态练习:猫狗案例 */ class Animal { public void eat() { System.out.println("吃饭"); } } class Dog extends Animal { public void eat() { System.out.println("狗吃肉"); } public void lookDoor() { System.out.println("狗看门"); } } class Cat extends Animal { public void eat() { System.out.println("猫吃鱼"); } public void playGame() { System.out.println("猫捉迷藏"); } } class DuoTaiTest { public static void main(String[] args) { // 定义为狗 Animal a = new Dog(); a.eat(); System.out.println("--------------"); // 还原成狗 Dog d = (Dog) a; d.eat(); d.lookDoor(); System.out.println("--------------"); // 变成猫 a = new Cat(); a.eat(); System.out.println("--------------"); // 还原成猫 Cat c = (Cat) a; c.eat(); c.playGame(); System.out.println("--------------"); // 演示错误的内容 // Dog dd = new Animal(); // Dog ddd = new Cat(); // ClassCastException // Dog dd = (Dog)a; } }
2:南北方人
/* 不同地方饮食文化不同的案例 */ class Person { public void eat() { System.out.println("吃饭"); } } class SouthPerson extends Person { public void eat() { System.out.println("炒菜,吃米饭"); } public void jingShang() { System.out.println("经商"); } } class NorthPerson extends Person { public void eat() { System.out.println("炖菜,吃馒头"); } public void yanJiu() { System.out.println("研究"); } } class DuoTaiTest2 { public static void main(String[] args) { // 测试 // 南方人 Person p = new SouthPerson(); p.eat(); System.out.println("-------------"); SouthPerson sp = (SouthPerson) p; sp.eat(); sp.jingShang(); System.out.println("-------------"); // 北方人 p = new NorthPerson(); p.eat(); System.out.println("-------------"); NorthPerson np = (NorthPerson) p; np.eat(); np.yanJiu(); } }
3:
/* 看程序写结果:先判断有没有问题,如果没有,写出结果 */ 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 DuoTaiTest3 { public static void main(String[] args) { Fu f = new Zi(); // 找不到符号 // f.method(); f.show(); } }
4:
/* 看程序写结果:先判断有没有问题,如果没有,写出结果 多态的成员访问特点: 方法:编译看左边,运行看右边。 继承的时候: 子类中有和父类中一样的方法,叫重写。 子类中没有父亲中出现过的方法,方法就被继承过来了。 */ class A { public void show() { show2(); } public void show2() { System.out.println("我"); } } class B extends A { /* public void show() { show2(); } */ public void show2() { System.out.println("爱"); } } class C extends B { public void show() { super.show(); } public void show2() { System.out.println("你"); } } public class DuoTaiTest4 { public static void main(String[] args) { A a = new B(); a.show(); B b = new C(); b.show(); } }
标签:
原文地址:http://my.oschina.net/u/2001589/blog/509432