二、关于构造方法的继承的研究 ①
class Person{ public String name; public int age ; public Person(String name , int age) { this.name = name ; this.age = age; } public void show() { System.out.print(name + "---" + age); }}public class Student extends Person{ String sid; public void show() { super.show(); System.out.println( "---" + sid); } public static void main(String[]args) { Student s = new Student("lixiao",21); s.sid = "2014210811"; s.show(); }}
结果编译出错
“Error:(17, 8) java: 无法将类 Person中的构造器 Person应用到给定类型;
需要: java.lang.String,int
找到: 没有参数
原因: 实际参数列表和形式参数列表长度不同”
继续做出修改在子类中添加构造方法
②
class Person{ public String name; public int age ; public Person(String name , int age) { this.name = name; this.age = age; } public void show() { System.out.print(name + "---" + age); }}public class Student extends Person{ String sid; public Student(String name , int age , String sid) { this.name = name; this.age = age; this.sid = sid; } public void show() { super.show(); System.out.println( "---" + sid); } public static void main(String[]args) { Student s = new Student("lixiao",21,"2014210811"); s.show(); }}
结果同样不能通过编译
“Error:(20, 5) java: 无法将类 Person中的构造器 Person应用到给定类型;
需要: java.lang.String,int
找到: 没有参数
原因: 实际参数列表和形式参数列表长度不同”
我们不妨在父类中再写一个空的构造方法③
class Person{ public String name; public int age ; public Person(){ } public Person(String name , int age) { this.name = name; this.age = age; } public void show() { System.out.print(name + "---" + age); }}public class Student extends Person{ String sid; public Student(String name , int age , String sid) { this.name = name; this.age = age; this.sid = sid; } public void show() { super.show(); System.out.println( "---" + sid); } public static void main(String[]args) { Student s = new Student("lixiao",21,"2014210811"); s.show(); }}
结果运行成功:“lixiao---21---2014210811”
去掉父类中构造方法后
class Person{ public String name; public int age ; public void show() { System.out.print(name + "---" + age); }}public class Student extends Person{ String sid; public Student(String name , int age , String sid) { super(); this.name = name; this.age = age; this.sid = sid; } public void show() { super.show(); System.out.println( "---" + sid); } public static void main(String[]args) { Student s = new Student("lixiao",21,"2014210811"); s.show();
}
}
结果也是成功运行:“lixiao---21---2014210811”