java阅读程序写结果,继承

class Person{
public Person(){System.out.println(“Person()”); }
}
class Teacher extends Person{
public Teacher(){this(“Teacher(String)”); System.out.println(“Teacher()”);}
public Teacher(String s){System.out.println(s);}
}

publicclass Faculty extends Teacher{
publicFaculty(){System.out.println("Faculty()");}
public static voidmain(String[] args) {Faculty fa = new Faculty();}
程序输出的结果是?并解释,谢谢了。

这个怎么没人回答啊,我来回答了。
输出结果:Person()
Teacher(String)
Teacher()
Faculty()
程序先执行main方法,因为Faculty继承了Teacher类,所以要执行Teacher的无参构造方法,但是Teacher类又继承了Person类,所以在执行Teacher的构造方法之前,要先执行Person的无参构造方法,打印Person(),接着执行Teacher的无参构造方法,里面调用了有参构造方法Teacher(String s),打印Teacher(String)和Teacher(),最后才是执行Faculty的无参构造方法打印Faculty()。希望能帮助到你!!!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-28
输出是:
Person()

Teacher(String)

Teacher()

Faculty()
程序入口main方法,创建Faculty对象,调用其无参构造函数,会先调用其父类Teacher的无参构造函数,而Teacher的父类是Person,故先调用Person的无参构造函数。
所以程序依次调用Person,Teacher,Faculty的无参构造函数
第2个回答  2013-12-29
Person()Teacher(String)Teacher()Faculty()
main方法中实例化Faculty对象时,先调用父类(Teacher)的父类(Person)的空构造输出Person(),然后调用Teacher类的空构造函数,输出Teacher(String),再输出Teacher(),最后调用自身构造函数输出Faculty()
相似回答