接口,抽象方法的作用--随笔

    abstract 关键字允许人们在类中创建一个或者多个没有任何定义的方法----提供了接口部分,但是没有提供任何相应的具体实现,这些实现是由此类的继承者创建的。也就是说abstract类只是对外提供一个接口,这个接口通常在基类中创建,用于通过多态去搞事情(也就是向上转型)。因为导出类有而基类没有的方法,基类是没法访问导出类中的这个方法的。

     一个类只能继承一个类,向上转型的时候只能转成一个基类。因此我们就出现了接口,一个类可以是实现多个接口。当我们把一个类和就扣组合在一起的时候,这个类必须放在前面,后面跟着的才是接口(否则编译器会报错)。一定要记住使用接口的核心原因,一为了能够向上转型为多个基类型(以及由此而带来的灵活性)。然而使用接口的第二个原因确实与使用抽象基类相同:防止客户端程序员创建该类的对象,并确保这仅仅是建立一个接口。

     那么就带来一个问题,我们应该使用接口还是抽象类呢?

     如果要创建不带任何方法定义和成员变量的基类,那么就应该选择接口而不是抽象类。事实上,如果知道某事物应该成为一个基类,那么第一选择应该是使它成为一个接口。

    接口扩展的时候可以使用多继承(仅适用于接口的继承)。一般情况下,只可以将extends用于单一的类,但是可以引用多个基类接口。就像底下的例子,只需要用逗号将接口名一一分割开就行。

interface m{  void a(); }

interface z{  void b(); }

interface y{  void c(); }

interface g extends m,z,y{  void d(); }

class i implements g {

public void a(){};

public void b(){};

public void c(){};

public void d(){};

}

猜你喜欢

转载自blog.csdn.net/lihuihao2/article/details/82869270
今日推荐