JAVA-初步认识-第九章-接口-多实现

一.

接口的出现就只是为了将特殊的抽象类重新书写出来么?内容全是抽象方法的定义为接口,只有这点好处么?
仅仅是因为特殊的抽象类么?

不,接口的出现解决了很多实用性的问题。比如说,之前在学习的时候,说过java不支持多继承。多继承就是一个子类有多个父类。

 不确定性就是说继承的多个父类之间,可能有相同的函数(这里的相同说的是函数声明相同,内容可相同,也可不相同)。

多实现的目的是什么?
多继承的目的是为了提高子类的功能,扩展性得到了提高。

为了扩充子类的功能,java改良成多实现。这里带来两个问题,多实现就没有不确定性问题了么接口中都是抽象方法,实现多实现结构还要重写,意义大么

第二个问题,就是在于要重写方法,而多实现解决的是让实现的子类具备一些功能,至于重写函数的麻烦不在考虑的范围之内。那么第一个不确定性问题呢?

多继承不支持,是因为方法的不确定性,声明相同,方法体不同,子类在继承执行相同的方法时,不知道执行哪个方法体。毛病出现在方法体上。禁止使用多继承,就是为了预防出现这样的问题。但是接口中定义的全是抽象方法,在多个继承的时候(说法不正确,要说成实现,但是本质还是继承覆盖),即使碰到相同的函数,也没关系,因为里面没有方法体,要执行的方法体是子类的自己重写,压根不会产生要执行多个不同的方法体的选择问题。而且,我认为多接口中,根本不会出现相同的方法,因为,编写的时候是从上往下的书写的。只是在最初在理解的时候,是从下往上的,可能要遇到这些问题。多继承不执行,也有父类中有一般函数,不是抽象函数的问题。不是说子类多继承几个父类不行,有一些情况也是可以的,但是为了预防出现的问题,所以禁止它了。

接口是给子类提高了一些功能,告诉子类你可以具备哪些功能,至于怎么实现这些功能,需要子类自己书写。

二. 多现实是怎么操作的

截图中就是一个多实现的具体操作,当然过程中省略了一些东西,比如结构的方法中省去了abstract。

在上面的截图中,两个接口都告诉Test类,你具有show()方法,这并不冲突,相当于说了两次,但实际中并不会出现这样的问题。因为,书写的时候,是从上往下写的。

多实现对于实现接口的数目没有限制,想实现多少个都可以。

现在对接口中的两个方法进行了改变

截图中的程序,运行时会报错,问题出现在对象对子类进行调用时,对象调用方法并不会显示返回值类型,只显示方法名,这样就会出现混乱,导致出错。

多继承时,两个父类中的方法重名,会导致出错。

原文地址:https://www.cnblogs.com/wsw-bk/p/7759778.html