A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 汪小照 于 2012-9-22 12:12 编辑

有这样三个类,Person,Student.GoodStudent。其中Student继承了Person,GoodStudent继承了Student,三个类中只有默认的构造函数,用什么样的方法证明在创建Student类的对象的时候是否调用了Person的构造函数,在创建GoodStudent类的对象的时候是否调用了Student构造函数?如果在创建Student对象的时候没有调用Person的构造函数,那么采用什么样的手段可以调用父类的构造函数?

5 个回复

倒序浏览
在构造方法里打印一句话不就知道了
回复 使用道具 举报
调用父类的构造可以在子类构造中写 this.super()
回复 使用道具 举报
想看的更清楚的话打断点跟一下就知道了         版主 我不是恶意刷屏  我是断断续续的想办法。
回复 使用道具 举报
  1. class Person{
  2.         Person(){
  3.                 System.out.println("Person!");
  4.         }
  5. }

  6. class Student extends Person{
  7.         Student(){
  8.                 System.out.println("Student!");
  9.         }
  10. }
  11. public class GoodStudent extends Student {

  12.         GoodStudent(){
  13.                 System.out.println("GoodStudent!");
  14.         }
  15.        
  16.         public static void main(String[] args) {
  17.                 new Student();
  18.                 System.out.println("-------");
  19.                 new GoodStudent();
  20.         }
  21. }
复制代码
在默认构造函数中打印个语句就可以知道了。
创建Student对象调用了Person的构造函数。
调用GoodStudent对象调用了Student的构造函数,同时也调用了Person的构造函数。
记住:子类继承父类,父类的属性和方法都在子类中有一份,只是被隐藏了。
回复 使用道具 举报
嗯,说的对,但感觉这有点和题意不同了,“三个类中只有默认的构造函数”???
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马