gpt4 book ai didi

java - 子类在抽象父类(super class)中使用不同的构造函数实现公共(public)方法

转载 作者:行者123 更新时间:2023-12-02 06:01:53 26 4
gpt4 key购买 nike

我知道这已经讨论过 here但我对这个问题有一些补充。我需要创建一个名为 AbstractGraph 的抽象类,并且必须通过两种类型的图形实现来扩展它:一种使用矩阵,另一种使用列表。

到目前为止我有这样的事情:

abstract class AbstractGraph implements Graph {

public void removeAllEdges(){
//implementation here
}

}

和子类:

public GraphMatrix(){
GraphMatrix()
{
//implementation for matrix type
}
}

public GraphList(){
GraphList()
{
//different implementation for lists type
}
}

两种实现都具有完全相同的 removeAllEdges() 方法,因此我猜它必须放置在抽象类中。我的问题是,如何从抽象类内部使用对 this 的引用?我是否必须用 getter 和 setter 来填充实现?如果是这样,那么为两个(或更多)子类使用一个方法的单个实现会有什么好处。

最佳答案

您可以对removeAllEdges使用相同的代码,只要它不依赖于底层结构(例如,矩阵或列表)或者功能是通过使用底层图形结构的封装方法(例如,getters, setter ,以及您可能需要的其他常用方法)。在我看来,后面的方法将是此类的抽象方法,因为它们需要根据底层图结构来实现。

好处之一是代码重用。您编写一次,然后在每个图形实现中使用它。在您的情况下,您有两个图形类,但根据您的应用程序,您最终可能会拥有多种图形表示形式。编写通用方法是节省编码时间的好方法,它还可以帮助您以更高效、更有组织的方式维护代码。调试也更容易!!

关于java - 子类在抽象父类(super class)中使用不同的构造函数实现公共(public)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22603440/

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