gpt4 book ai didi

Java继承...困惑

转载 作者:行者123 更新时间:2023-11-29 09:37:08 29 4
gpt4 key购买 nike

我有一个抽象父类,它有多个子类。我希望 child 能够拥有一个对于该 child 的每个实例都相同的变量。我不想将构造函数传递给 child 来告诉它它的名字,因为当它可以被硬编码时,这看起来很愚蠢。从我读到的内容来看,执行以下操作“隐藏”了 parents 实例变量并且无法按我的意愿工作。

public abstract class Parent {
public String name = "the parent";
public getName(name);
}
public class Child1 extends Parent {
public String name = "Jon";
}
public class Child2 extends Parent {
public String name = "Mary";
}

Child1 c = new Child1();
c.getName(); // want this to return "Jon", but instead returns "the parent".

明确地说,基本上我想要的是类似于 c.getClass().getName() 的东西,但我不想让结果依赖于类名,而是依赖于硬编码值。

谢谢

最佳答案

您可以在父级中声明一个抽象方法,并让每个子级实现该方法以返回适当的名称,如下所示:

public abstract class Parent {
public abstract String getName();
}

public class Child1 extends Parent {
private static final String NAME = "Jon";
public String getName() { return NAME; }
}

public class Child2 extends Parent {
private static final String NAME = "Mary";
public String getName() { return NAME; }
}

关于Java继承...困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5781852/

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