class person
{
String name;
 public person(String name)
{
this.name=name;
}

public void work()
{
System.out.println(name+" 的工作是劳动");
}
}class teacher extends person
{
String name;
 public teacher(String name)
{
super(name);
}   public void work()
{
System.out.println(name+" 的工作是教育学生");
}

}
class student extends person
{
String name;
 public student(String name)
{
super(name);
}

public void work()
{
System.out.println(name+" 的工作是学习");
}
}public class abc {
  public static void main(String args[])
  {
   person p1=new person("张三");
   teacher t1=new teacher("李四");
   student s1=new student("王五");
   p1.work();
   t1.work();
   s1.work();
  }
}
本来想得到的是 张三的工作是劳动,李四的工作是教育学生,王五的工作是学习
但得到的结果是 张三的工作是劳动,null的工作是教育学生,null的工作是学习
请问是什么原因

解决方案 »

  1.   

    teacher t1=new teacher("李四"); 
      student s1=new student("王五"); 
    你这样只是给父类的name设初值了,你的teacher中的变量name这时并没有值,所以就默认null
    另一个student也是一样class teacher extends person 

    String name; 
    public teacher(String name) 

    super(name); 
    }   public void work() 

    System.out.println(super.name+" 的工作是教育学生"); 
    } } 
    class student extends person 

    String name; 
    public student(String name) 

    super(name); 
    } public void work() 

    System.out.println(super.name+" 的工作是学习");