java吧 关注:1,294,974贴子:12,828,238
  • 10回复贴,共1

小白求助关于private访问控制问题

只看楼主收藏回复

class Person {
private String name;
private int age;
public void setName(String name){this.name=name;}
public void setAge(int age) {this.age=age;}
public String getName(){return name;}
public int getAge(){return age;}
public String getInfo() {
return "Name: "+ name + "\n" +"age: "+ age;
}
}
class Student extends Person {
private String school;
public String getSchool() {return school;}
public void setSchool(String school)
{this.school =school;}
public String getInfo() {
return "Name: "+ getName() + "\nage: "+ getAge()
+ "\nschool: "+ school;
}
}
public class TestOverWrite {
public static void main(String arg[]){
Student student = new Student();
Person person = new Person();
person.setName("none");
person.setAge(1000);
student.setName("John");
student.setAge(18);
student.setSchool("SCH");
System.out.println(person.getInfo());
System.out.println(student.getInfo());
}
}
程序如上,对于private的话只有同一个类内部才能访问,那为啥子类student能够通过调用方法访问并修改基类person中private的内容呢。。求助。。


IP属地:湖北1楼2014-08-04 15:36回复
    因为方法是定义在Person里的


    IP属地:上海来自Android客户端2楼2014-08-04 15:38
    收起回复
      2026-01-18 07:52:20
      广告
      不感兴趣
      开通SVIP免广告
      如此标准的十五字为什么没长经验


      来自Android客户端4楼2014-08-04 15:49
      收起回复
        private属性是不能在别的类直接用的,但是有了public的set和get方法,就能够通过这类方法来间接使用,因为set和get方法是可以直接用private的属性的。这样用比较安全,项目都这样做


        来自Android客户端5楼2014-08-04 15:54
        收起回复