接口与其实现类之间的关系(自己因为具体实例而产生的问题与解答)

接口里的方法是抽象的,不具体实现,需要实现类去实现它

实现类必须实现接口的所有方法(自己定义如何实现)

例子;

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();
    }
}

那么现在就有了几个问题:

  1. A a = new B();
    定义的对象a是A类型还是B类型?
        答:是接口A引用指向B的对象,所以是B类型
        那为什么要引用呢?和直接创建实现类有什么区别?
        答:是为了使接口A实例化。。。为什么呢
        是为了减少代码量修改,如果要使用另一个实现类D,将B改为D即可,其余实现的方法如a.add();不变。
    
  2. 我如果使用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

posted @   ku然  阅读(507)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示