标签:性问题 扩展性 冲突 es2017 需要 实现 过程 font 好处
一.
接口的出现就只是为了将特殊的抽象类重新书写出来么?内容全是抽象方法的定义为接口,只有这点好处么?
仅仅是因为特殊的抽象类么?
不,接口的出现解决了很多实用性的问题。比如说,之前在学习的时候,说过java不支持多继承。多继承就是一个子类有多个父类。
不确定性就是说继承的多个父类之间,可能有相同的函数(这里的相同说的是函数声明相同,内容可相同,也可不相同)。
多实现的目的是什么?
多继承的目的是为了提高子类的功能,扩展性得到了提高。
为了扩充子类的功能,java改良成多实现。这里带来两个问题,多实现就没有不确定性问题了么?接口中都是抽象方法,实现多实现结构还要重写,意义大么?
第二个问题,就是在于要重写方法,而多实现解决的是让实现的子类具备一些功能,至于重写函数的麻烦不在考虑的范围之内。那么第一个不确定性问题呢?
多继承不支持,是因为方法的不确定性,声明相同,方法体不同,子类在继承执行相同的方法时,不知道执行哪个方法体。毛病出现在方法体上。禁止使用多继承,就是为了预防出现这样的问题。但是接口中定义的全是抽象方法,在多个继承的时候(说法不正确,要说成实现,但是本质还是继承覆盖),即使碰到相同的函数,也没关系,因为里面没有方法体,要执行的方法体是子类的自己重写,压根不会产生要执行多个不同的方法体的选择问题。而且,我认为多接口中,根本不会出现相同的方法,因为,编写的时候是从上往下的书写的。只是在最初在理解的时候,是从下往上的,可能要遇到这些问题。多继承不执行,也有父类中有一般函数,不是抽象函数的问题。不是说子类多继承几个父类不行,有一些情况也是可以的,但是为了预防出现的问题,所以禁止它了。
接口是给子类提高了一些功能,告诉子类你可以具备哪些功能,至于怎么实现这些功能,需要子类自己书写。
二. 多现实是怎么操作的
截图中就是一个多实现的具体操作,当然过程中省略了一些东西,比如结构的方法中省去了abstract。
在上面的截图中,两个接口都告诉Test类,你具有show()方法,这并不冲突,相当于说了两次,但实际中并不会出现这样的问题。因为,书写的时候,是从上往下写的。
多实现对于实现接口的数目没有限制,想实现多少个都可以。
现在对接口中的两个方法进行了改变
截图中的程序,运行时会报错,问题出现在对象对子类进行调用时,对象调用方法并不会显示返回值类型,只显示方法名,这样就会出现混乱,导致出错。
多继承时,两个父类中的方法重名,会导致出错。
标签:性问题 扩展性 冲突 es2017 需要 实现 过程 font 好处
原文地址:http://www.cnblogs.com/wsw-bk/p/7759778.html