我们有一个抽象类Parent
和另外两个类:class ChildOne
和Childtwo
,都来自Parent
。
问题:如果我们将Parent
声明为接口,那么当两者都实现此接口时,ChildOne
和ChildTwo
会发生什么或发生什么变化?
答案 0 :(得分:1)
语法,这些类需要implements Parent
而不是extends Parent
在Java 7或之前,接口不能包含方法实现,因此您需要在ChildOne
和ChildTwo
中重写它们。 (从Java8开始,您可以在接口中编写默认方法实现)。
由于界面无法保存属性,因此您还需要在ChildOne
和ChildTwo
中复制它们。
答案 1 :(得分:0)
如果将抽象类转换为界面,则需要
答案 2 :(得分:0)
假设你的意思是定义,当你说“如果我们拒绝作为一个接口的父母”,那么改变应该如下。 1.您应该放弃在父类中编写的功能。 2.无论您在接口中定义哪些抽象函数(替换Parent),您都必须为Children编写不同的独立实现。
答案 3 :(得分:0)
当您将Parent
作为抽象类时,ChildOne
和ChildTwo
将继承Parent
中定义的非抽象方法。这意味着,ChildOne
和ChildTwo
默认会从Parent
获得一些功能。当ChildOne
和ChildTwo
具有一些常用功能时,这会非常有用,可以放在Parent
中。
当您将Parent
作为界面时,ChildOne
和ChildTwo
需要实现Parent
中的所有方法。
答案 4 :(得分:0)
两者都会在
ChildOne
和ChildTwo
发生或发生变化 实现这个接口
这些都不会发生 - 它们只能扩展一些不同的类(因为在Java中,类只能扩展一个类,但可以实现许多接口)。因此,如果可能的话,最好将Parent声明为接口而不是抽象类。
如果您在Parent中定义了一些字段,构造函数或非抽象方法,那么当然不可能将Parent
从抽象类更改为接口。请记住,接口只能包含抽象方法声明 - 没有字段,方法实现或构造函数声明(除非我们说的是静态字段/方法,但是当我们讨论继承时这些都是不可能的。)