你只是调用了父类的构造方法,如果你想显示Student自己的name的话需要在Student类设一个私有成员变量name
代码已调试好。- class Person //定义Person类
- {
- private String name; //定义Person类的两个属性name和age;
- private int age;
- Person(String name,int age)//构造函数初始化
- {
- this.name = name;
- this.age = age;
- }
- void show() //show方法,说出自己的属性
- {
- System.out.println("My name is:"+name+"\t"+"I am "+age+" years old");
- }
- }
- class Student extends Person //Student继承了Person。
- {
- private String name;//这里Student类必须也得有个私有的name
- private int studentid; //增加了一个特有属性学号
- Student(String name,int age) //当未分配学号的时候,构造函数初始化
- {
- super(name, age);//调用父类的构造函数初始化
- this.name = name; //这里需要给Student类的name赋值,不然只是调用了父类的构造方法
- }
- Student(String name,int age,int studentid)//当有name、age、studentid三个属性的构造函数
- {
- this(name,age);
- this.studentid = studentid;
- }
- void show() //重写show()方法
- {
- System.out.println("My name is:"+name+"\t"+"My id is "+studentid);//jvm报错,因为操作了父类里面的私有属性。
- }
- }
- class Test //主函数
- {
- public static void main(String[] args)
- {
- // Person a = new Person("张三",23);
- Student s = new Student("张三", 23, 10001);
-
- s.show();
- }
- }
复制代码 |