public class Test5 {
public static void main(String[] args)
{
//建立Chinese类的对象zhangsan,并调用sayHello()方法
Chinese zhangsan=new Chinese("张三",22);
zhangsan.sayHello();
}
}
//建立Person类
class Person{
//将姓名和年龄属性私有化
private String name;
private int age;
//构造函数2,必须传入名字和年龄才能建立对象
Person(String name,int age)
{
this.name=name;
this.age=age;
}
public int getAge()
{
return age;
}
public String getName()
{
return name;
}
//打招呼的方式并非共性,由子类来复写
void sayHello(){}
}
//建立Chinese继承Person
class Chinese extends Person{
private String name;
private int age;
Chinese(String name,int age)
{
super(name,age);
}
//中国人特有的打招呼方法
public void sayHello()
{
//System.out.println("我叫"+getName()+",今年"+getAge()+"岁了。"); //该结果为我叫张三,今年22岁了,这样没问题,
System.out.println("我叫"+name+",今年"+age+"岁了。"); //该结果为我叫null,今年0岁了
}
}
/*
1.为什么?super(name,age)不是等价于this.name=name;this.age=age;吗?
可是打印结果name为null,age为0.说明并没有赋值。
2.继承的getAge()和getName()却能返回传入的“张三”和22.
这又说明构造函数确实接收了,希望能解答我的疑惑
*/
|