多态的必要条件:
1:要有继承
2:要有重写
3:父类引用指向子类对象
创建一个动物类
public class Animal { public void cry(){ System.out.println("叫......"); } }
创建一个狗类 继承动物类
public class Dog extends Animal { String name; public Dog(String name) { this.name = name; } //覆盖重写动物类方法 public void cry() { System.out.println("狗叫......"); } }
创建一个猫类 继承动物类
public class Cat extends Animal { String name; public Cat(String name) { this.name = name; } //覆盖重写动物类方法 public void cry() { System.out.println("猫叫......."); } }
创建一个人类
public class Person { String name; Animal animal; //传过来一个Animal类型或Animal子类的对象 就是父类引用指向子类对象 //实际就是animal引用指向Cat、Dog类对象 public Person(String name, Animal animal) { this.name = name; this.animal = animal; } //宠物叫 public void petCry() { this.animal.cry(); } }
测试类
public class Test { public static void main(String[] args) { Dog d=new Dog("小黑"); Cat c=new Cat("小花"); Person p1=new Person("张三",d); Person p2=new Person("李四",c); p1.petCry(); p2.petCry(); } }
输出:
狗叫......
猫叫.......
浙公网安备 33010602011771号