1 package duoTai02;
2 /*
3 多态中成员访问特点
4 成员变量:编译看左边,执行看左边
5 成员方法:编译看左边,执行看右边
6
7 原因:因为成员方法有重写,而成员变量没有
8 */
9 public class AnimalDemo {
10 public static void main(String[] args) {
11 //有父类引用指向子类对象
12 Animal a =new Cat();
13
14 System.out.println(a.age);
15 // System.out.println(a.weight);
16
17 a.eat();
18 //a.playGame();
19 }
20 }
1 package duoTai03;
2
3 public class Cat extends Animal{
4
5 @Override
6 public void eat() {
7 System.out.println("猫吃鱼");
8 }
9 }
1 package duoTai03;
2
3 public class Dog extends Animal{
4
5 @Override
6 public void eat() {
7 System.out.println("狗吃骨头");
8 }
9
10 public void lookDoor(){
11 System.out.println("狗看门");
12 }
13 }
1 package duoTai03;
2
3 public class AnimalOperator {
4
5 /* public void useAnimal(Cat c){
6 c.eat();
7 }
8
9 public void useAnimal(Dog d){
10 d.eat();
11 }*/
12
13 public void useAnimal(Animal a){
14 a.eat();
15 // a.loolDoor();
16 }
17 }
1 package duoTai03;
2 /*
3 多态的好处和弊端
4 多态的好处:提高了程序的扩展性
5 具体体现:定义方法的时候,使用父类型作为差数,将来在使用的时候,使用具体的值类型参与操作
6 多态的弊端:
7 不能使用子类的特有功能
8 * */
9 public class AnimalDemo {
10
11 public static void main(String[] args) {
12 //创建动物操作类的对象,调用方法
13 AnimalOperator ao = new AnimalOperator();
14 Cat c = new Cat();
15 ao.useAnimal(c);
16
17 Dog d = new Dog();
18 ao.useAnimal(d);
19 }
20 }