final修饰的对象,有几种初始化的方式

本文探讨了final修饰的对象在Java SE中的初始化方法,包括成员对象的三种方式:声明时直接赋值、构造方法中赋值和构造代码块中赋值,以及类对象(静态对象)的两种初始化方式:定义时直接赋值和静态代码块中赋值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

final修饰的对象,有几种初始化的方式

final修饰的对象初始化分两种情况考虑

第一种:修饰成员对象时有3种初始化方式

  • 修饰成员变量时直接赋值
  • 声明完变量后在构造方法中为其赋值
  • 声明完变量后在构造代码块当中为其赋值

第二种:修饰类对象(静态对象)

  • 在定义类变量直接赋值
  • 在静态代码块中直接赋值

代码解析

package com.liqh;

public class TestFinal {

    /**
     *1、使用final修饰的类的特点:该类不能有子类
     *2、使用final修饰的对象的特点:该对象的应用地址不能改变
     *3、使用final修饰的方法的特点:该类方法不能被重写
     *4、使用final修饰的变量的特点:该变量会变成常量、值不能被改变
     *
     */
    
    //初始化方法1、在定义变量时直接赋值
    private final int i=10;
    private final AuthorUser user = new AuthorUser();

    //初始化方式2、声明完变量后在其构造方法为其赋值
    //如果采用这用方式、那么每一个被final修饰的变量都要在构造方法中赋值。

    private final int j;
    private final AuthorUser author;

    public TestFinal(){
        j=20;
        author = new AuthorUser();
    }

    public TestFinal(String book){
       this();
    }

    //初始化方式3、声明完变量后在构造代码块中为其赋值
    //如果采用此方式,就不能在构造方法中再次为其赋值
    //构造代码块中的代码会在构造函数之前执行,如果在构造函数中再次赋值,
    //就会造成final变量的重复赋值

    private final int k;
    private final AuthorUser authorUser1;

    {
        k=10;
        authorUser1 = new AuthorUser("西游记","吴承恩");
    }

    //因为成员变量属于对象独有,每个对象创建时只会调用一次构造函数,
    //因为可以保证该成员变量只被初始化一次;
    //而类变量是该类的所有对象共有,每个对象创建时都会对该变量赋值
    //这样就会造成变量的重复赋值。
    private final static int q;
    private final static AuthorUser authorUser2;
    static {
        q=10;
        authorUser2 = new  AuthorUser("红楼梦","曹雪芹");

    }

}

package com.liqh;

public class AuthorUser {
    private String bookName;
    private String author;

    public AuthorUser() {

    }
    public AuthorUser(String bookName, String author) {
        this.bookName = bookName;
        this.author = author;
    }
    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值