gpt4 book ai didi

Java从抽象类访问子类方法/变量

转载 作者:行者123 更新时间:2023-11-30 05:51:23 25 4
gpt4 key购买 nike

这段代码不是我的,我需要对其进行一些改进,但我陷入了这个问题。

我有一个抽象类“CallNode”和很多子类,其中一个是“Call”。 “Checker”类拦截未接来电,但将它们作为 CallNode 返回。我的问题是我需要获取此调用的 ID,但我无法通过 CallNode 访问它。

你对解决这个问题有什么建议吗?

我给你代码,这样你可以更好地理解问题:

public abstract class CallNode {
public abstract CallNode hasMissingCall();
}

public class Call extends CallNode {
public int id;

// Simplification of method
public CallNode hasMissingCall() {
if (true)
return this;
// ...
}
}

public class Checker{
private static CallNode rootExpected;

CallNode missing = rootExpected.hasMissingCall();

System.out.println( missing.id ); // THE PROBLEM!!!
}

提前致谢!!!

最佳答案

在抽象类中定义一个返回id的模板方法:

public abstract class CallNode {
public abstract CallNode hasMissingCall();

public abstract int getId();
}

让子类实现它:

public class Call extends CallNode {
public int id;

// Simplification of method
public CallNode hasMissingCall() {
if (true)
return this;
// ...
}
public int getId()
{
return this.id;
}
}

这是一种选择。我个人将在 CallNode 类中向上移动 id 字段,因为我认为它应该是唯一的并由所有子类共享。

关于Java从抽象类访问子类方法/变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12875129/

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