接口 对象=new 实现类
父类 对象=new 实现类
好处:减少开发过程中代码的修改量
定义一个animal抽象类, 里面有两个方法。
接下里定义两个类(cat和dog)去继承animal,cat和dog分别重写了animal中的方法。
我们在调用dog里面的方法之后,想修改为调用cat的方法。
只需要将Animal animal=new Dog()改成Animal animal=new Cat(), 只改变了一个对象。接着继续调用animal.sing(),animal.run()。
interface People{
void peopleList();
}
class Student implements People{
public void peopleList(){
System.out.println("I’m a student.");
}
}
class Teacher implements People{
public void peopleList(){
System.out.println("I’m a teacher.");
}
}
public class Example{
public static void main(String args[]){
People a; //声明接口变量
a=new Student(); //实例化,接口变量中存放对象的引用
a.peopleList(); //接口回调
a=new Teacher(); //实例化,接口变量中存放对象的引用
a.peopleList(); //接口回调
}
}
结果:
I’m a student.
I’m a teacher.
例子参考:https://zhidao.baidu.com/question/1923748969384870227.html
需要注意的是这种写法的对象只能调用其接口中的方法。
例如:LinkedList实现了Deque接口与list接口,其中removeLast();
为Deque接口的方法,则List<Integer> list = new LinkedList<>();
中list无法调用removeLast();
。
https://blog.csdn.net/weixin_44769957/article/details/110000881