为什么需要接口
Java中的类只支持单继承,即一个子类只能有一个父类。子类会具有父类的通用特征;
如果我们希望在一个类中能够同时兼容多个不同类型的特征?
如果我们要求,不同的类型在他们无法拥有共同父类的前提下,仍然要包含有相同的特征?
此时,代码应该如何编写?
如:手机,和智能手表都能打电话和发短信,但很难将二者抽取一个公共的父类。因为手机和手表的功能是相互交叉、互有异同的。
手机和手表之间又有相似的行为,由此可以引出接口,通过接口来建立这些相似行为之间的联系。
接口实现
接口中的方法,不能有方法体。
一个类实现一个接口使用:implements关键字;如下定义的Camera相机类
报错发现:一个类实现一个接口的时候,需要实现接口中的方法。
一个类可以同时继承一个类,和实现接口。如下定义的FourthPhone手机类
测试:
注:如上,IPhotoip=newFourthPhoto();接口引用指向实现类时,该ip只能调用接口中的方法,而不能调用FourthPhoto()类中自己定义的方法。
即由此可以感觉到,我们可以通过接口来描述不同的类型具有相似的行为特征,从而建立关系之后,以接口引用指向实现类的方式来描述不同的类型对于接口的行为的具体表现。。
即同一个接口类型的引用,会因为其实际指向的对象类型的不同,而调用同一个名字的方法的不同的实现
接口更加体现了,多态的抽象类中的“父类”的“大纲华,简单化”,接口中的方法都是不能有方法体的抽象方法。接口也体现了多态的特性。接口的多继承,也扩展了Java的灵活性。
抽象类到接口的关系,类似于,从特殊到一般的关系。相对于一般的Java类,抽象类解放了一般类,避免了一般类中不必的、可能没有实际逻辑意义的、预设性的代码;;;而接口更加强化了抽象类的特征,更加见简略了代码,同时由于多继承的关系增加了程序的灵活性。一般类、抽象类、接口,均能体现Java语言的多态特性,而且在这个递进演化过程中,其越来越简洁、越来越明显。。
0210708注:抽象类和接口各有用武之地;目前的理解是:接口更偏重于在多态上的应用,,抽象类更偏向于【把很多共用的方法和属性写在一个抽象类中】;
文章为作者独立观点,不代表观点