gpt4 book ai didi

java - 无法访问 Person 类型的封闭实例

转载 作者:行者123 更新时间:2023-12-02 07:07:28 24 4
gpt4 key购买 nike

我想知道是否有人可以告诉我为什么我在第 175 行收到错误

Student george= new Student("George Flintstone", 21, "Politics", 3.1);

这表示没有可访问的 person 类型的封闭实例。我浏览过其他类似的问题,但我对java不太熟悉,所以我没有真正找到答案,至少是我足够理解的答案。这是我的 java 入门课的作业。我没有在常见问题解答中看到任何内容说我不能寻求家庭作业方面的帮助,但我承认我没有仔细阅读它,所以如果我违反了某些规则或其他规则,请告诉我。

另外,很抱歉发布了这么多代码,我不确定其中的哪些部分可能很重要。

Public class Person {

String name;
int age;

public Person(String n, int a)
{
name = n;
age = a;
}

public Person()
{
name = "Bob";
age = 24;
}

public void set_Person(String n)
{
name = n;
}

public void set_Person(int a)
{
age = a;
}

public void set_Person(String n, int a)
{
name = n;
age = a;
}

public String get_Name()
{
return name;
}

public int get_Age()
{
return age;
}

public boolean equals(Object ob)
{
Person p = (Person)ob;
if(ob == null)
return false;
if(name.equals(p.name) && age == p.age)
return true;
else
return false;
}

public String toString()
{
String temp = name + " is " + age + " years old ";
return temp;
}

class Student {

String major;
double gpa;
Person p = new Person();

Student(String n, int a, String m, double g )
{
p.set_Person(n,a);
major = m;
gpa = g;
}

Student()
{
p.set_Person("Ben", 10);
major = "compsci";
gpa = 3.5;
}

public void set_Student(String n, int a, String m, double g)
{
p.set_Person(n,a);
major = m;
gpa = g;
}

public void set_Student(String n)
{
p.set_Person(n);
}

public void set_Student(int a)
{
p.set_Person(a);
}

public String getStudentName()
{
String temp = p.get_Name();
return temp;
}

public int getStudentAge()
{
return p.get_Age();
}


}

class Family {


Person [] per_array;
int person_count = 0;
Person temp = new Person();

Family(int members)
{
Person[] per_array = new Person[members];
}

public void addPerson(Person p)
{
boolean check = false;

for(int count = 0; count < per_array.length; count++){
if(per_array[count].equals(p))
{
System.out.println("That person is already a member of this family");
check = true;
}
}
if(check = false){
per_array[person_count] = p;
person_count++;
}
}

public void addPerson(Student s)
{
temp.set_Person(s.getStudentName(), s.getStudentAge());
boolean check = false;

for(int count = 0; count < per_array.length; count++){
if(per_array[count].equals(temp))
{
System.out.println("That person is already a member of this family");
check = true;
}
}

if(check = false){
per_array[person_count] = temp;
person_count++;
}

}

public void printOutFamily()
{
for(int count = 0; count < per_array.length; count++)
{
per_array[count].toString();
}
}
}

public static void main(String[] args) {
Person fred= new Person("Fred Flintstone", 50);
System.out.println("created " + fred);

Person wilma = new Person("Wilma Flintstone", 48);
Student george= new Student("George Flintstone", 21, "Politics", 3.1);
System.out.println("created " + george);

Student sue= new Student("Sue Flintstone", 24, "Nursing", 3.3);
Student anotherGeorge= new Student("George Flintstone", 21, "Math", 3.4);
Person yetAnotherGeorge= new Person("George Flintstone", 21);

Family f = new Family(10);
f.addPerson(fred);
f.addPerson(wilma);
f.addPerson(george);
f.addPerson(sue);
f.addPerson(anotherGeorge);
f.addPerson(yetAnotherGeorge);

anotherGeorge.set_Student("Georgie Flintstone");
f.addPerson(anotherGeorge);

f.printOutFamily();
}

}

最佳答案

Student 是一个内部类,与 Person 的特定实例关联,这意味着调用是无效的

new Student("George Flintstone", 21, "Math", 3.4);*

使内部类静态将允许它工作。静态内部类(也称为嵌套类)不需要外部类(此处为 Person)的实例。

关于java - 无法访问 Person 类型的封闭实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15915769/

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