接口里的方法是抽象的,不具体实现,需要实现类去实现它
实现类必须实现接口的所有方法(自己定义如何实现)
例子;
interface A{
void add();
}
class B implements A{
void add(){
sout("加")
}
}
class C implements A{
B b;
public void setC(B b){
this.b = b;
}
Void add(){
b.add();
}
}
那么现在就有了几个问题:
-
A a = new B(); 定义的对象a是A类型还是B类型? 答:是接口A引用指向B的对象,所以是B类型 那为什么要引用呢?和直接创建实现类有什么区别? 答:是为了使接口A实例化。。。为什么呢 是为了减少代码量修改,如果要使用另一个实现类D,将B改为D即可,其余实现的方法如a.add();不变。
-
我如果使用C创建的对象来实现方法,只能直接创建C的对象( C c = new C();)而不能引用A接口,不然C中的set方法无法使用,同时,C中引用的B对象也必须是B创建的对象(B b = new B();)不能引用A接口,原因是什么?
答:因为在C实现类里调用的是B的对象,所以在主函数里也必须调用B对象,如果在C里改用接口A(A a),则调用时就可以用A接口引用的B对象
A a = new B();
C c = new (a);
从而实现在B中添加功能需使用代理C来实现,从而保证B不会被修改,防止其他程序代码的错误
同时也能保证问题一;
学习文章:https://blog.csdn.net/weixin_44769957/article/details/110000881
标签:实现,void,接口,对象,add,实例,new,解答 From: https://www.cnblogs.com/isku-ran/p/16658987.html