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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

刚刚学完子类实例化过程,总结出来的实例化过程,和大家分享,
希望有那些不对的,请高手指教。
一下是我做的事例代码,执行后的结果是: (从结果中的编号和代码作比对就很容易看出程序执行的过程了)
(1)Person static10
(2)Student static99
(3)Persion100lishi
(4)Student100lishi
(5)Student名
  1. class ExtendsTest
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Student s=new Student(100,"名");
  6.         }
  7. }
  8. //----------------------------------------------Person.class
  9. class Person
  10. {
  11.         public static int age=10;
  12.         String name="lishi";
  13.         //静态代码块
  14.         static
  15.         {
  16.                 System.out.println("(1)Person static"+age);
  17.         }
  18.         //构造方法
  19.         public Person(int age)
  20.         {
  21.                 this.age=age;
  22.                 System.out.println("(3)Persion"+age+name);
  23.         }

  24. }
  25. //---------------------------------------------Student.class
  26. class Student extends Person
  27. {
  28.         static int ss=99;
  29.         //静态代码块
  30.         static
  31.         {
  32.                 System.out.println("(2)Student static"+ss);
  33.         }
  34.         //构造方法
  35.         Student(int age)
  36.         {
  37.                 super(age);
  38.                 System.out.println("(4)Student"+age+name);
  39.         }
  40.         Student(int age,String name)
  41.         {
  42.                 this(age);
  43.                 this.name=name;
  44.                 System.out.println("(5)Student"+name);
  45.         }


  46. }
复制代码

/*
过程总结
1、new Student()子类时,先加载父类Person
2、创建Person类内的对象成员并进行默认初始化,然后加载并执行static静态代码块
3、加载Student子类,创建子类内的对象并进行默认初始化,然后加载并执行static静态代码块
4、根据new Student()的参数列表,执行相对应的构造方法,并对构造方法中的形式参数赋值
5、查看构造方法中是否有this()调用语句,有就执行。没有就调用super()语句或隐式的super()语句
6、本例中有this(age);语句,所以先执行父类的Student(int age)构造方法
7、然后在重复第5,发现Student(int age)构造方法没有this()语句,但有super(age)语句,就执行了
8、根据super()语句的参数列表选择父类中对应的构造方法public Person(int age)并对构造方法中的形式参数

赋值,执行并重复5。发现没有没有this()和super()语句,就追溯到Object类为止。
9、对当前类中的成员变量显示初始化,执行构造函数中的代码。
10、后返回上个子类的构造函数,重复9,直到最后一个子类最后一个构造函数执行完成。
*/

评分

参与人数 1技术分 +2 收起 理由
何伟超 + 2

查看全部评分

2 个回复

正序浏览
总结的好详细!
回复 使用道具 举报
我想说,写的好细,感觉对于初学者来说,多分析分析流程,对学习非常好。赞一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马