对象属性初始化

对象属性初始化
1.声明该属性的时候初始化。
2.构造方法中初始化。
3.初始化块。


public class Hero2 {
    public String name="well done";//声明时初始化
    protected  float hp;
    float maxHP;
    {
        maxHP=100;//初始化块
    }
    public  Hero2(){
        hp=200;//构造方法中初始化

    }

}

类属性初始化
1.声明该属性的时候。
2.静态初始化块。

package com.ly.character;

public class Hero3 {
    public  String name;
    protected float hp;
    float maxHP;

    //物品栏的容量
    public  static int itemCapacity=8;
    static{
        itemCapacity = 6;//静态初始化块 初始化
    }

    public Hero3(){

    }

    public static void main(String[] args) {
        System.out.println(Hero3.itemCapacity);
    }
}

对象属性的初始化有三种方式
故意把初始化块,放在构造方法下面,问题:

这三种方式,谁先执行?谁后执行?

package com.ly.initclass;

public class Hero {
    public  String name=getName("属性声明");

    public  Hero(){
        name=getName("构造方法");
    }
    {
        name=getName("初始化块");
    }

    private String getName(String name) {
        System.out.println("初始化块"+name);
        return  name;
    }

    public static void main(String[] args) {
        new Hero();
    }
}

在这里插入图片描述
应该是属性显式声明和初始化块是同一优先级的!其次才是构造方法。
你可以试着把初始化块放在属性显式声明的方面打印看看效果,
例如int a=1; int b =2;谁放上面谁放下面没有任何区别,同理与初始化块和属性显式声明,只是不符合平时的代码书写习惯。
属性赋值顺序(按优先级):1.属性默认初始化 2.属性显式初始化/初始化块 3.构造器中初始化 4.对象.属性/对象.方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值