gpt4 book ai didi

Java重写方法错误

转载 作者:行者123 更新时间:2023-11-30 03:17:51 25 4
gpt4 key购买 nike

基本上,我创建了一个 Person 类和一个构造函数,用于设置 Person 的名称、姓氏、年龄。该类的所有属性都按应有的方式设置为私有(private)。我已经为所有属性制作了 setter 和 getter。在主要方法上,出于练习原因,我尝试重写其中一个 setter 。它确实绘制了一个错误,指出 Person.name 不可见,这意味着它无法访问私有(private),为什么会发生这种情况,我的意思是如果没有覆盖它可以访问的方法。但如果我将其设置为保护模式我就会工作。这是代码:

class Person {
private int age;
private String name;
private String last_name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLast_name() {
return last_name;
}
public void setLast_name(String last_name) {
this.last_name = last_name;
}
public Person(int age, String name, String last_name) {
this.age = age;
this.name = name;
this.last_name = last_name;

}
}


public class main {

public static void main(String[] args) {
// TODO Auto-generated method stub
Person per = new Person(15,"bb","Sb") {
public void setName(String name) {
this.name = "aaaa";
}
};
per.setName("asdfaf");
System.out.println(per.getName());
}
}

最佳答案

私有(private)成员只能在声明它的类中访问。您创建了 Person 的匿名子类,并尝试从子类访问父类(super class)的 private 成员。这是绝对不允许的。

当类的开发人员希望允许其子类访问该类的某些成员时,他们会将访问级别设置为protected

关于Java重写方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32132629/

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