Animal类
public abstract class Animal {
public abstract void cry();
public abstract String getAnimalName();
}
Cat类
public class Cat extends Animal {
public void cry(){
System.out.println("喵喵.....");
}
public String getAnimalName(){
return "猫";
}
}
Dog类
public class Dog extends Animal{
public void cry(){
System.out.println("汪汪.....");
}
public String getAnimalName(){
return "狗";
}
}
Speaker类
public class Speaker {
public void Sound(Animal animal){
System.out.println("这是" + animal.getAnimalName() + "类的声音:");
animal.cry();
}
}
Main类
public class Main {
public static void main(String[] args){
Speaker speaker = new Speaker();
speaker.Sound(new Dog());
speaker.Sound(new Cat());
}
}
什么是借口回调?
接口回调是指把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被该类重写的接口方法。
什么是对象的上转型对象?
对象的上转型对象的实体是子类负责创建的,但上转型对象会失去原对象的一些属性和功能(上转型对象相当于子类对象的一个“简化”对象)。上转型对象具有以下特点:
1.上转型对象不能操作子类新增的成员变量(失掉了这部分属性),不能调用子类新增的方法(失掉了一些功能)。
2.上转型对象可以访问子类继承或隐藏的成员变量,也可以调用子类继承的方法或子类的重写方法。上转型对象操作子类继承的方法或子类重写的方法,其作用等价于用子类对象去调用这些方法。