class Person
{
String name;
Person(String n)
{
this.name=n;
}
}
class Student extends Person
{
//String name;//注意,如果打上这句话,那么运行结果是null;
//因为下面那句super(b);其实就是this.name=b。而这个name是父类的name。
//只不过是子类拿来用了。所以“zhangsan”实际上是赋给了super的那个
//name了。你再打印this.name,当然会显示为空。
//测试如下。当下面改成super.name时。会打印zhangsan。
Student(String b)
{
super(b);
}
public void speak()
{
System.out.println(this.name);//这个name,其实是父类的name,你
//如果自己再定义一个name,那么就变成本类自己的name了。
//而super(b)这句话已经把zhangsan赋值给了super的name,所以打印
//结果为null。
}
} |