Java——final关键字与权限修饰符

本文详细介绍了Java中的final关键字,包括其用于修饰类、方法和变量的用法及注意事项。final关键字可以防止类被继承,方法被重写,以及变量被重新赋值。深入理解部分探讨了final修饰引用变量时对象内容的可变性,以及final与static的结合使用。文章还提到了权限修饰符的作用。
摘要由CSDN通过智能技术生成

final关键字

final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。

一、final关键字的基本用法

  1. 修饰类

当一个类如果使用final修饰时,那么它将不能再被继承了;而且他的成员方法也将不能再被覆盖重写了。
注意:
1、final的成员变量可以根据需要设为final,但是他的成员方法都会被隐式地指定为final
2、在使用final修饰类的时候,要注意谨慎选择,除非这个类真的在以后不会用来继承或者出于安全的考虑,尽量不要将类设计为final类。
3、对于类、方法来说,abstract和final不能同时使用。

public final class MyClass /*extends Object*/ {

    public void method(){
        System.out.println("方法执行!");
    }
}

在这里插入图片描述

  1. 修饰方法

使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。

注意:
1、类的private方法会隐式地被指定为final方法
2、当final关键字用来修饰一个方法的时候,这个方法就是最终方法,也就是不能被覆盖重写

  1. 修饰变量

对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

注意:
1、由于成员变量具有默认值,所以用了final之后必须手动赋值,不会再给默认值了。
2、对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值,二者选其一。
1、必须保证类当中所有重载的构造方法,都最终会对final的成员变量进行赋值。

二、final深入理解

1、被final修饰的引用变量指向的对象内容可变吗?
答:可变。变量被final修饰之后,虽然不能再指向其他对象,但是它指向的对象的内容是可变的。

2、 final和static
运行这段代码:最后j的值都一样,i的值不一样。

public class Test {
    public static void main(String[] args)  {
        MyClass myClass1 = new MyClass();
        MyClass myClass2 = new MyClass();
        System.out.println(myClass1.i);
        System.out.println(myClass1.j);
        System.out.println(myClass2.i);
        System.out.println(myClass2.j);
 
    }
}
 
class MyClass {
    public final double i = Math.random();
    public static double j = Math.random();
}

权限修饰符

Java中有四种权限修饰符,分别是public,protected,default,private
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值