gpt4 book ai didi

java - 面向对象编程。子类的字段

转载 作者:行者123 更新时间:2023-12-03 20:10:38 25 4
gpt4 key购买 nike

我做了一个树类(数学表达式的抽象)。它有嵌套类“顶点”和字段“顶点头”。另一个类 'BinaryTree' 扩展了 Tree,但它有更多的可能性,因为它是 Binary 并且它们有不同的 Vertex 类(我添加到 Vertex 方法 giveRight 和 giveLeft),这就是我使用嵌套类继承的原因。但是我有来自 Tree head 的字段,它没有方法 giveRight 等等......这是一个例子:

class Tree{
class Vertex{
//smth
}
Vertex head;
}

class BinaryTree extends Tree{
class Vertex extends Tree.Vertex{
//added methods...
}
//problem with head element, it is element of Tree.Vertex
}

我对这个问题的面向对象部分是否正确?或者我应该从 Tree 中删除 head 字段并将其仅添加到它的子类中。

谢谢。

最佳答案

主要问题不是head 字段的声明类型,而是它的运行时类型。如果子类是唯一创建自己的顶点的子类,则它可以将 BinaryTree.Vertex 分配给 head 变量。不过,如果您想使用它的其他方法,则必须将 if 转换为 BinaryTree.Vertex

为避免强制转换,您可以将 Tree 类设为泛型:

public class Tree<V extends Vertex> {
protected V head;
}

public class BinaryTree extends Tree<BinaryVertex> {

}

参见 javadoc有关泛型的更多信息。

关于java - 面向对象编程。子类的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8906462/

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