gpt4 book ai didi

java - 如何在 Java 的实现类中的抽象类中实现抽象类?

转载 作者:行者123 更新时间:2023-11-30 11:04:08 24 4
gpt4 key购买 nike

我有两个类,它们的结构类似于以下代码。

public class ClassOne {

private Data data;

public ClassOne(Data data) {
this.data = data;
}

public Data getData() {
return data;
}

public static class Data {

//code one

}
}

public class ClassTwo {

private Data data;

public ClassTwo(Data data) {
this.data = data;
}

public Data getData() {
return data;
}

public static class Data {

//code two

}
}

如您所见,这两个类都有 Data 对象,它们具有不同的实现。我可以移动父类中的 Data 对象并在这两个类中实现它吗?它可能类似于以下代码。

public abstract class AbstractClass {

Data data;

public AbstractClass(Data data) {
this.data = data;
}

public Data getData() {
return data;
}

public abstract class Data{}
}

public class ClassOne extends AbstractClass {

public ClassOne(Data data) {
super(data);
}

//Implementation from AbstractClass.Data
public class Data {

//code one

}
}

public class ClassTwo extends AbstractClass {

public ClassTwo(Data data) {
super(data);
}

//Implementation from AbstractClass.Data
public class Data {

//code two

}
}

据我所知,Java只能扩展一个类,那么如何实现内部抽象类(Data)呢?

最佳答案

如果你创建一个静态嵌套类,那么它就成为外部类的一个组成部分。在您的示例中,具有相同名称 Data 的两个不同类是外部类 ClassOneClassTwo 的一部分。由于具有相同名称 Data 的两个类的实现不同,因此保持它们的原样并没有什么坏处。无论如何,您不会以计划创建抽象类的方式获得任何优势,然后尝试将其强加于其他两个类。 IMO 它的现状非常好。

考虑两个类 AVLTreeRedBlackTree 的示例,这两个类都可能需要一个性质不同的类 Node。所以它非常好,您不需要重构代码。

关于java - 如何在 Java 的实现类中的抽象类中实现抽象类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30115696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com