谁知道这代码错在哪了啊?搞了半天也没找出来。class Person{
private String name;

void setName(String n){
this.name = n;
}


String getInfo(){
return "name is"+ this.name;
}
}class Student extends Person{

private String school;

void setSchool(String s){
this.school = s;
}
String getInfo(){
return "name is "+ name + "; school is " + school;
}
}public class TestPrivate{
public static void main(String[] args){
Person person = new Person();
Student student = new Student();
student.setName("bill");
student.setSchool("Peking University");
System.out.println(student.getInfo());
}
}

解决方案 »

  1.   

    private String name;改成protected String name;才能在子类里直接访问name
      

  2.   

    name是private的,只能在声明这个变量的类中使用,所以可以在Person中添加一个public方法:
    public String getName() {
       return name;
    }然后Student的getInfo改为:
    String getInfo() {
    return "name is " + getName() + "; school is " + school;
    }
      

  3.   


    class Person {
    private String name;

    void setName(String n) {
    this.name = n;
    }
    String getName() {
    return name;
    }
    String getInfo() {
    return "name is" + this.name;
    }
    }class Student extends Person { private String school; void setSchool(String s) {
    this.school = s;
    }
    String getSchool() {
    return school;
    }
    String getInfo() {
    return "name is " + this.getName() + "; school is " + this.getSchool();
    }
    }public class TestPrivate {
    public static void main(String[] args) {
    Person person = new Person();
    Student student = new Student();
    student.setName("bill");
    student.setSchool("Peking University");
    System.out.println(student.getInfo());
    }
    }你name在person类中定义为private就要使用get方法访问
      

  4.   

    private私有变量不能被子类直接使用,也可以在Person添加getName方法,然后在子类中直接调用