Java多态六:接口,为什么需要接口;接口的定义;

探讨Java中接口的重要性,如何解决单继承限制,实现多类型兼容与相似行为的统一描述。接口与抽象类的区别,以及它们在多态中的作用。

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注:抽象类和接口各有用武之地;目前的理解是:接口更偏重于在多态上的应用,,抽象类更偏向于【把很多共用的方法和属性写在一个抽象类中】;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值