Java final 关键字详解

final 关键字的作用

final 可以用来修饰类、方法和实例域

1.修饰类

final修饰的类不能被任何类继承(final类没有子类)

创建final类Animal

创建Cat类试图继承Animal,编译报错

典型的final类有String类

2.修饰方法

被final修饰的方法不能被子类重写

创建final修饰的run方法

Cat类试图重写run方法,编译报错

3.修饰属性

构建对象的时候必须初始化final修饰的实例域。也就是说必须保证在每个构造器执行之后,这个域被设置(当然也可以在创建实例域的时候就进行初始化),并且在后面的操作中,不能够再对它进行修改。

public class Animal {

    private final String name;

    public Animal(){
        name = "dog";
    }
    
}
public class Animal {

    private final String name = "dog";
    
}

既然是不能修改的那set方法自然是不允许的,编译不通过

final修饰符大都应用于基本类型域,或不可变类的域(如果一个类中的每个方法都不会改变其对象,那么这个类就是不可变类。例如String类就是不可变类)。

对于用final修饰可变类(不建议),只是表示存储在变量中的对象引用不会再指向其他对象,换句话说就是存储在变量中的对象地址不变。不过这个对象是可以改变的。例:

public class Animal {

    private final StringBuilder sb;

    public Animal(){
        sb = new StringBuilder();
    }

    public void test(){
        sb.append("test");
    }

}

以上就是final关键字的三种用法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值