【发布时间】:2015-08-21 04:58:47
【问题描述】:
基本上,我创建了一个 Person 类和一个构造函数,用于设置 Person 的名称、姓氏、年龄。该类的所有属性都设置为应有的私有属性。我已经为所有属性制作了 setter 和 getter。在主要方法上,出于实践原因,我尝试覆盖其中一个二传手。它确实绘制了一个错误,说 Person.name 不可见,这意味着它无法访问私有,为什么会发生这种情况,我的意思是如果没有覆盖它可以访问的方法。但如果我将它设置为保护模式,我会工作。 代码如下:
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());
}
}
【问题讨论】:
-
因为它破坏了封装!
-
你在哪里覆盖一个方法?我在您发布的代码中的任何地方都没有看到这种情况。
-
public void setName(String name) { this.name = "aaaa"; } -
嘿,Tim 方法已被实例化覆盖,
-
Ankur,在 c++ 中是可能的,这怎么会破坏封装?
标签: java