接口不能实例化

抽象类,通过继承它实现多态,后期绑定,可以为将来要实现的东西做好接口,实现重用性。

 

InterfaceA IA = new InterfaceA();

编译器报错:Cannot instantiate the type TA 指明接口只能被声明,不能被实例化。

 

 

简单工厂设计模式

设定一个Class名称是AClass,在面向对象编程中,一般一个Class都会继承一个接口,设定AClass的接口为AInterface,那么生成AClass的对象方法如下:

 

                                    AInterface  a = new AClass();

改写成下列方式:
AInterface  a = Afactory.create();    //代码2

Afactory的create方法封装了具体创建细节。
解耦了创建过程和使用过程,系统可扩展性增强,稳定性增强。
Afactory的create方法代码:
    public static AInterface create(){
         ……
        return new AClass();
   }

上面代码2这一行是使用Afactory的create方法来生成AInterface实例。

 

 

由于是初学者,之前一直对上面这句很困惑,前几天看到一个用抽象类实现接口的案例,为什么不直接用抽象类的实例的方法?

 

网上的解答:

 

接口是强制性的,它的所有方法都要实现。

但是抽象类不是,
比如说一个接口,你只用到其中的一两个方法,可是如果直接实现接口需要实现里面的五个方法,这时候你可以先让抽象类实现接口,然后你的类继承接口,就不需要都实现接口的方法了
而且接口的抽象层次要更高,是一种契约,抽象类是提供了很多的方法,给你用,没有强制性。

 

抽象类和接口比起来,有一个好处,就是某些函数可以实现具体的方法,而并不一定是声明抽象的方法,而接口只能声明抽象方法,所以用一个抽象类来实现某个接口可以实现一些通用的方法,而这些具体实现的方法里还可以调用抽象方法,所以减少了子类中的重复代码

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值