1.为什么需要接口
Java中的类只支持单继承,即一个子类只能有一个父类。子类会具有父类的通用特征;
那么,如果我们希望在一个类中能够同时兼容多个不同类型的特征?
如果我们要求,不同的类型在他们无法拥有共同父类的前提下,仍然要包含有相同的特征?
此时,代码应该如何编写?
如:手机,和智能手表都能打电话和发短信,但很难将二者抽取一个公共的父类。因为手机和手表的功能是相互交叉、互有异同的。
但是,手机和手表之间又有相似的行为,由此可以引出接口,通过接口来建立这些相似行为之间的联系。
2.接口实现
接口中的方法,不能有方法体。(注意,这儿没有使用abstract,没有报错)

一个类实现一个接口使用:implements关键字;如下定义的Camera相机类
(注:implements:使生效,贯彻,执行,实施)

报错发现:一个类实现一个接口的时候,需要实现接口中的方法。

一个类可以同时继承一个类,和实现接口。如下定义的FourthPhone手机类
(注:继承父类:更偏重于“省事,不用重复书写某些代码”;实现接口:更偏重于“必须得这么做,必须得实际完成某些具体代码”)

测试:

注:如上,IPhoto ip = new FourthPhoto();接口引用指向实现类时,该ip只能调用接口中的方法,而不能调用FourthPhoto()类中自己定义的方法。(经验证:一般的父类引用指向子类对象的情况下,其也只能调用父类中的方法,和子类重写父类的方法,而不能调用子类新增的特有方法)
即由此可以感觉到,我们可以通过接口来描述不同的类型具有相似的行为特征,从而建立关系之后,以接口引用指向实现类的方式来描述 不同的类型对于接口的行为的具体表现。(即,接口仅倾向于不同类之间的共性)。(20210708注:目前理解,这也是java多态的基础;这也是之所以java能开发【易于维护和扩展程序】的支撑;)
即同一个接口类型的引用,会因为其实际指向的对象类型的不同,而调用同一个名字的方法的不同的实现
Comments:
(1)接口更加体现了,多态的抽象类中的“父类”的“大纲华,简单化”,接口中的方法都是不能有方法体的抽象方法。 接口也体现了多态的特性。 同时,接口的多继承,也扩展了Java的灵活性。(20200914)
(2)抽象类到接口的关系,类似于,从特殊到一般的关系。相对于一般的Java类,抽象类解放了一般类,避免了一般类中不必的、可能没有实际逻辑意义的、预设性的代码;;;而接口更加强化了抽象类的特征,更加见简略了代码,同时由于多继承的关系增加了程序的灵活性。一般类、抽象类、接口,均能体现Java语言的多态特性,而且在这个递进演化过程中,其越来越简洁、越来越明显。(20200914)。
(3)20210708注:抽象类和接口各有用武之地;目前的理解是:接口更偏重于在多态上的应用,,抽象类更偏向于【把很多共用的方法和属性写在一个抽象类中】;
探讨Java中接口的重要性,如何解决单继承限制,实现多类型兼容与相似行为的统一描述。接口与抽象类的区别,以及它们在多态中的作用。
2724

被折叠的 条评论
为什么被折叠?



