gpt4 book ai didi

java - 使用不同的范围访问子类和父类中的相同变量

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:32 27 4
gpt4 key购买 nike

我经常遇到这个问题,但找不到优雅的方法来做到这一点。假设我有 A 类是父类,B 类是子类

class A {
protected Animal anim;
public A(){
}

}

class B extends A{
public B(){
anim = new Dog();
}

private doSomething(){
((Dog)anim).accessDogMethod();
}
}

我的问题总是出在变量 anim 上。我想访问特定的 Dog 方法。但是,除非我沮丧,否则我做不到。我不想到处贬低它。所以我找到的唯一方法是:

class B extends A{
private Dog dog;
public B(){
anim = new Dog();
dog = anim;
}

private doSomething(){
dog.accessDogMethod();
}
}

但是必须有更好的方法。我想要父类和子类中的变量,以便每个类访问它们的相关信息

有什么建议吗?

最佳答案

您可以使用参数类型(即泛型)。

class A<T extends Animal> {
protected T anim;
public A(){
}
}

class B extends A<Dog> {
public B(){
anim = new Dog();
}

private doSomething(){
anim.accessDogMethod();
}
}

听起来您有平行的继承层次结构。这是一种常见的代码味道,表明您可能想要重新考虑您的设计。

关于java - 使用不同的范围访问子类和父类中的相同变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35682863/

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