首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型祖父母的数组无法访问外孙的元素

类型祖父母的数组无法访问外孙的元素
EN

Stack Overflow用户
提问于 2022-09-22 23:13:00
回答 2查看 31关注 0票数 0

我创建了一个具有祖父母类型的数组,传递的对象是该类型的孙辈,但无法访问子类中的元素。这些不是我正在编写的东西,它们只是例子。

这是爷爷奶奶

代码语言:javascript
复制
public class Animal {

String name = "Animal";


}

这是孩子的课

代码语言:javascript
复制
public class Bird extends Animal {

String name = "Bird";

}

这是孙子班

代码语言:javascript
复制
public class RedBird extends Bird {
String name = "Red Bird";



}

我遇到的问题是

代码语言:javascript
复制
public class Room {
public static void main(String args[]) {

Animal[] anim = {new RedBird};

System.out.println(Animal[0].name);

 }
}

这个程序会输出错误的东西

代码语言:javascript
复制
Animal

有人知道我怎么解决这个问题吗?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2022-09-22 23:46:30

另一种看待这个问题的方法是,如果不想要这种行为,就不要重新声明字段。换句话说,添加String声明了一个新字段,您不想这样做。您可以使用初始化器块或构造函数来分配新名称。

代码语言:javascript
复制
public class Animal {
  String name = "Animal";
}

public class Bird extends Animal {
  { name = "Bird"; }  // This is an initializer block
}

public class RedBird extends Bird {
  { name = "Red Bird"; }
}

这将印上“红鸟”。

票数 2
EN

Stack Overflow用户

发布于 2022-09-23 00:18:55

代码语言:javascript
复制
class Animal {
    String name;
    public Animal() {
        name = "Animal";
    }
}

class Bird extends Animal {
    public Bird() {
        name = "Bird";
    }
}

class RedBird extends Bird {
    public RedBird() {
        name = "RedBird";
    }
}

class Main {
    public static void main(String[] args) {
        Animal a = new RedBird();
        System.out.println(a.name);
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73821511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档