日期:2014-05-20 浏览次数:21008 次
开始---> 父类的静态代码---> 子类的静态代码--> 父类的非静态代码---> 父类构造函数---> 子类非静态代码---> 子类构造函数--->完成 子类的构造函数的调用必须先完成父类的调用,这是系统初始化特性,所以super必须在构造方法中的第一句 如果父类的不存在“有参构造方法”,此时写不写super无所谓,子类构造方法一定会调用super(), 如果父类的 存在“有参构造方法”,此时必须指定是哪一个父类的构造方法
------解决方案--------------------
class Person { public String name; public int age; public void setPerson(String name, int age) { this.name = name; this.age = age; } public void show() { System.out.println(name); System.out.println(age); } } public class Student extends Person { private int math, english; public void Student(String name, int age, int m, int e) { setPerson(name,age); math = m; english = e; } public void show() { System.out.println("name=" + name); System.out.println("age=" + age); System.out.println("math" + math); System.out.println("english" + english); } public int total() { int total; return total = math + english; } public static void main(String[] args) { Student s = new Student(); s.Student("李四", 18, 70, 85); System.out.println("姓名:" + s.name + "年龄:" + s.age); System.out.println("得分 数学:" + s.math + " 英语:" + s.english); System.out.println("总分:" + s.total()); } }