赵雅智_java final关键字

final关键字可用于修饰类、变量和方法,不可改变

  • final变量
    • 成员变量
      • 类变量:当类初始化时,系统会为类变量分配内存,并赋默认值。
        • 显示赋值、静态初始化块
      • 实例变量:当创建对象时,系统会为该对象的实例属性分配内存,并赋默认值。
        • 显示赋值、非静态初始化块、构造方法
          final修饰的类变量、实例变量能指定初始值的地方如下:
          类变量:静态初始化块或声明该属性时指定初始值。
          实例变量:非静态初始化块、声明该属性时或构造方法中指定初始值。
    • 局部变量
      • 形参:不能被赋值
      • 定义时指定默认值,则后面代码中不能再对该变量赋值。
      • 定义时没有指定默认值,则可在后面代码中对该final变量赋初始值,但只能一次。
      • 在构造方法、初始化块中对final成员变量进行初始化,则不要在初始化之前就访问成员变量的值。
        例5.13 final成员的使用示例。
        public class Test{
        	final int age;
        	{
        	System.out.println(age);//编译出错
        	age=6;
        	System.out.println(age);
        	}
        	public static void main(String[] args){
        	new Test();
        	}
        }  
    • final修饰基本类型和引用类型变量的区别
      • 基本类型:不能对基本类型变量重新赋值。

      • 引用类型:保存的是一个引用,final只保证这个引用(地址)不会改变,即一直引用同一个对象,但这个对象可以发生改变。
        不能给对象赋值,可以用过对象访问

  • final方法

    • final修饰的方法仅仅是不能被重写,并不是不能被重载。

      public class TestFinalMethod{
      	public final void test(){}
      }
      class Sub extends TestFinalMethod{
      	public void test(){}
      } 

      出现编译错误

      public class TestFinalMethod{
      	public final void test(){}
      	public final void test(String arg){}
      }

      正确

  • final类

    • final修饰的类不可有子类。

      public final class FinalClass{
      	//类中成员
      }
      class Sub extends FinalClass{
      }

      演示final修饰的类不可被继承。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值