class person{
private String name;
private String location;
person(String name){
this.name = name;
location="beijing";
}
person(String name,String location){
this.name = name;
this.location = location;
}
public String info(){
return "name"+name+"location"+location;
}
}    class teacher extends person{
private String capital;
    teacher (String name,String capital){
     this(name,capital,"beijing");    
    }
    teacher (String name,String capital,String location){
     super(name,location);    
     this.capital = capital;
    }
    public String info(){
     return "name"+name+"location"+location+"capital"+capital;
    }
}public class TestTeacher {
    public static void main(String[] args) {
        Person p1 = new Person("A");
        Person p2 = new Person("B","shanghai");
        System.out.println(p1.info());
        System.out.println(p2.info());
           
        Teacher t1 = new Teacher("D", "Professor");
        System.out.println(t1.info());
    }
}

解决方案 »

  1.   

    name 和 location的访问权限是private, 子类不能直接访问,改成protected 或者 public
      

  2.   

    首先代码写的不规范,类名person,teacher首写应该大写Person,Teacher.public String info(){ 
         return "name"+name+"location"+location+"capital"+capital; 
        } 
    name,location是不好访问的,因为你在父类中定义成了private,所以子类不好访问,你应该在父类中把name,location定义成public或者protected.
      

  3.   

    你的代码有两种错误
    第一种:你的persno类和teacher类的类名的首字母是小写的 而你在TestTeacher类中
    创建的对象都是大写 
    第二种:你的name字段和location字段是私有的 不是公有的 所以不能在info方法中调用给你改完的程序是
       class person{
    public String name;
    public String location;
    person(String name){
    this.name = name;
    location="beijing";
    }
    person(String name,String location){
    this.name = name;
    this.location = location;
    }
    public String info(){
    return "name"+name+"location"+location;
    }
    } class teacher extends person{
    private String capital;
        teacher (String name,String capital){
         this(name,capital,"beijing");    
        }
        teacher (String name,String capital,String location){
         super(name,location);    
         this.capital = capital;
        }
        public String info(){
         return "name"+name+"location"+location+"capital"+capital;
        }
    }
    public class TestTeacher {
        public static void main(String[] args) {
            person p1 = new person("A");
            person p2 = new person("B","shanghai");
            System.out.println(p1.info());
            System.out.println(p2.info());
               
            teacher t1 = new teacher("D", "Professor");
            System.out.println(t1.info());
        }
    }
      

  4.   

    name,location定义成public或者protected.
      

  5.   

    非常 感谢 大家!学到不少。不过改正上面还有一个问题:D:\java\testteacher\testteacher.java:31: 类 TestTeacher 是公共的,应在名为 TestTeacher.java 的文件中声明
    public class TestTeacher {
           ^
    1 错误class Person{
    protected  String name;
    protected  String location;
    Person(String name){
    this.name = name;
    location="beijing";
    }
    Person(String name,String location){
    this.name = name;
    this.location = location;
    }
    public String info(){
    return "name"+name+"location"+location;
    }
    }    class Teacher extends Person{
    private String capital;
        Teacher (String name,String capital){
         this(name,capital,"beijing");    
        }
        Teacher (String name,String capital,String location){
         super(name,location);    
         this.capital = capital;
        }
        public String info(){
         return "name"+name+"location"+location+"capital"+capital;
        }
    }public class TestTeacher {
        public static void main(String[] args) {
            Person p1 = new Person("A");
            Person p2 = new Person("B","shanghai");
            System.out.println(p1.info());
            System.out.println(p2.info());   
            Teacher t1 = new Teacher("D", "Professor");
            System.out.println(t1.info());
        }
    }
      

  6.   

    清楚是我的文件名 大小 写问题没有各public 的一至!