黑马程序员--java中父类和子类都有构造方法时,子类对象的初始化过程

--------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! -------------------

先看一个代码例子(如果感觉有点乱的话,建议自己边思考边自己写着玩):

  1. class Fruit{
  2.         public static String Fruit_name = "Fruit静态变量";        
  3.         public String color = "Fruit非静态变量";
  4.         static{
  5.                 System.out.println(Fruit_name);        //若将Fruit_name的初始化放在static程序块后边,则编译错误,说明static成员变量及代码块级别相同,只看向后顺序
  6.                 //System.out.println(color);        //此时color还未初始化
  7.                 System.out.println("Fruit的Static程序块");
  8.         }
  9.         
  10.         public Fruit(){
  11.                 System.out.println("Fruit()");
  12.         }
  13.         
  14.         {                                                                        //虽然在构造函数后边,却先执行
  15.                 System.out.println("---------------");
  16.                 System.out.println(color);
  17.                 System.out.println("Fruit非Static程序块");
  18.         }
  19. }
  20. public class Apple extends Fruit{
  21.         public static String apple_name = "appale静态变量";
  22.         public String apple_color = "Apple非静态变量";
  23.         static{
  24.                 System.out.println(apple_name);
  25.                 //System.out.println(apple_color);        //此时apple_color还未初始化
  26.                 System.out.println("Apple的Static程序块");
  27.         }
  28.         {
  29.                 System.out.println("---------------");
  30.                 System.out.println(apple_color);
  31.                 System.out.println("Apple非Static程序块");
  32.         }
  33.         public Apple(){
  34.                 System.out.println("appale()");
  35.         }
  36.         public static void main(String args[]){
  37.                 new Apple();
  38.         }
  39. }

初始化次顺序为:
1、父类静态成员变量和静态代码块(看代码中向后顺序执行) --> 子类静态成员变量和静态代码块(看代码中向后顺序执行)
2、父类非静态成员变量和静态代码块(看代码中向后顺序执行) --> 父类构造方法
3、子类非静态成员变量和静态代码块(看代码中向后顺序执行) --> 子类构造方法

建议按照自己的思路重新编写一下代码,理解更清楚。

---------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! -------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值