gpt4 book ai didi

java - 如何从父类访问子变量?

转载 作者:行者123 更新时间:2023-11-30 08:58:55 24 4
gpt4 key购买 nike

我有 3 个类(class),Person、Student 和 Teacher。 Student 和 Teacher 扩展了 Person。如何从 Person 中访问实例变量?就像如果 Student 和 Teacher 都有一个内部名称列表,我如何从父类中访问这两个名称数组?

class Person
{
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void printAllNames() { //<-- How do you do this?
for(Student s : students) //can't access students array
System.out.println(s.getName());
for(Teacher t : teachers)
System.out.println(t.getName());
}
}

class Student extends Person
{
protected Student[] students;
Student(String name)
{
this.name = name;
students[students.length] = this;
}
}

class Teacher extends Person
{
protected Teacher[] teachers;
Teacher(String name)
{
this.name = name;
teacher[teachers.length] = this;
}
}

最佳答案

你的类设计不正确。您的 Student 类不应包含字段 students,因为其他学生不是 Student 实例的一部分(即此处不应使用组合)。相反,如果需要,您应该在这些类(class)之外创建学生列表。当然,老师也一样。

一个学生可能有一个 friend 列表,但这种关系最好也存储在类之外。好友列表不是学生的部分。什么需要成为学生的一部分取决于您要建模的内容(地址可以是学生的一部分,如果这有助于为管理目的定义学生)。

如果你想访问更高级别的字段,你可以从 Person 向下转换为 Student 但同样,这通常被视为设计的技术解决方案问题。

关于java - 如何从父类访问子变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27458063/

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