有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java抽象类和接口将发生什么变化

我们有一个抽象类Parent,还有另外两个类:class ChildOneChildtwo,它们都继承自Parent

问题:如果我们将Parent声明为一个接口,当ChildOneChildTwo都实现这个接口时,会发生什么变化


共 (5) 个答案

  1. # 1 楼答案

    假设你的意思是定义,当你说“如果我们拒绝将父接口作为接口”时,变化如下。 1.你应该放松在家长课堂上写的功能。 2.无论在接口中定义什么抽象函数(替换父函数),都必须为子函数编写不同的独立实现

  2. # 2 楼答案

    what will happen or change at ChildOne and ChildTwo when both implements this interface

    这些类不会发生任何变化——它们只能扩展一些不同的类(因为在Java中,一个类只能扩展一个类,但可以实现许多接口)。因此,如果可能的话,最好将父类声明为接口,而不是抽象类

    当然,如果在父类中定义了一些字段、构造函数或非抽象方法,就不可能将Parent从抽象类更改为接口。记住,接口只能保存抽象方法声明——没有字段、方法实现或构造函数声明(除非我们说的是静态字段/方法,但当我们谈论继承时,这些是不可能的)

  3. # 3 楼答案

    Parent作为抽象类时,ChildOneChildTwo将继承Parent中定义的非抽象方法。这意味着,默认情况下,ChildOneChildTwo将从Parent获得一些功能。当ChildOneChildTwo具有一些公共功能时,这尤其有用,这些功能可以放在Parent

    当您将Parent作为接口时,ChildOneChildTwo将需要实现Parent中的所有方法

  4. # 4 楼答案

    1. 语法,这些类将需要implements Parent而不是extends Parent

    2. 在Java 7或更早版本中,接口不能包含方法实现,因此需要在ChildOneChildTwo中重写它们。(自Java8以来,您可以在接口中编写默认方法实现)

    3. 由于接口不能保存一个属性,所以还需要在ChildOneChildTwo中复制它们

  5. # 5 楼答案

    如果将抽象类转换为接口,则需要

    • 实现接口,而不是扩展类
    • 不调用super()构造函数
    • 不调用任何超级方法
    • 将接口中重写/实现方法的任何方法公开。抽象类中的方法不必是公共的