Java 中的钻石继承与抽象类



我有一个包含多个抽象类的赋值,包括继承,但我在作业的特定位置遇到了问题。

这就是我所拥有的(靠近问题将要发生的特定位置(:

public abstract class A {
//some fields
//constructor
//some functions
}
public abstract class B extends A {
//some fields
//constructor
//override functions
//some new functions
}
public abstract class C extends A {
//some fields
//constructor
//override functions
//some functions
}
/* class D that extends both B and C */

现在我需要创建扩展类 B 和 C 的类 D。
我知道多重继承不能在 java 中使用,所以:

  1. 我想过委托 DP,但我无法创建 B 类和 C 类的 2 个实例(也无法扩展一个并创建另一个实例,因为它们都是抽象的(。
  2. 我还想也许可以用更复杂的函数/更多字段扩展类并创建另一个类的接口,但这会使我在新类中添加该类中的所有字段(我认为这不是"正确的方法"(。
  3. 我也不确定更改任何一个已经存在的类是否是我需要作为作业做的。

换句话说,我迷路了...

不能创建同时扩展 B 和 C 的类 D。

相反,请考虑使用接口,例如将 A、B、C 视为接口。

public interface A {
//some functions
}
public interface B extends A {
//some functions
}
public interface C extends A {
//some functions
}
public abstract class D implements C,B {
...
}

相关内容

  • 没有找到相关文章

最新更新