JAVA面向对象总结属性赋值的先后顺序:1、默认初始化 * 2、显式初始化 * 3、构造器中初始化 * 4、通过“对象.方法“或“对象.属性“赋值 *

        今天在面向对象这里学到了几种赋值方法,由此得到不同的属性赋值方法所执行的顺序也是不同的,所以想要记录一下。

/**
 * @ClassName UserTest
 * @Description
 *  总结属性赋值的先后顺序:
 *    1、默认初始化
 *    2、显式初始化
 *    3、构造器中初始化
 *    4、通过"对象.方法"或"对象.属性"赋值
 *
 *    以上操作的先后顺序:1、2、3、4
 * @Author zzwwss
 * @Date 2023/9/26 20:18
 * @Version 1.0
 */
public class UserTest {

    public static void main(String[] args) {
        User test = new User();
        User test1 = new User(2);
        test1.setAge(3);//加入这条语句以后,可以发现答案是3 3 1,从而得出对象.方法或者对象.属性的先后顺序在最后
        System.out.println(test1.getAge());
        System.out.println(test1.age);//2(注:没有加入"对象.方法"或"对象.属性"时)
        // 可以得出age是由1被覆盖得到的2,所以构造器初始化先后顺序在显式初始化后边
        System.out.println(test.age);//1  从显示得到的1,所以可以得出显示初始化在隐式初始化的后边
    }
}
class User{
    //默认初始化
    String name;
    //显式初始化
    int age=1;
    //构造器初始化
    public User(int a){
        age = a;
    }
    //默认构造器
    public User(){

    }
    //方法
    public void setAge(int a){
        age = a;
    }
    public int getAge(){
        return age;
    }
}

解析:创建一个UserTest主类和User类,第一次运行前,先把test1.setAge(3) 和 System.out.println(test1.getAge())注释掉不运行,因为我们需要先判断出前三种赋值方法的先后顺序

test1.age的值为2,可以得出age是由1被覆盖得到的2,所以构造器初始化先后顺序在显式初始化后边,test.age的值为1,因为是从默认初始化的0被显示初始化覆盖得到的1,所以可以得出显示初始化在默认初始化的后边

第二次运行

可以发现test1.getAge和test1.age是3 3 ,可以看出对象.方法得到的值3覆盖掉了前边的所有值,所以可以得出对象.方法或者对象.属性的先后顺序在最后

重要的是看覆盖的规律从而得到先后顺序

对构造器的特点记录一下:

说明: * 1、如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器 * 2、定义构造器的格式:权限修饰符 类名(形参列表){} * 3、一个类中定义的多个构造器,彼此构成重载 * 4、一旦我们显示的定义了类的构造器,那么系统将不再提供一个默认的空参构造器。注:即使我们将显示的定义语句注释掉,也将无济于事 * 5、一个类中至少会有一个构造器,可能是默认的,也可能是你自己创造的

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值