final

属性:定义就必须直接赋值或者在构造方法中进行赋值,并且后期都不能修改(使用场景:某一个变量,值是不改变,无论哪个对象调用值都是一样的,就可以用final修饰为常量

  • 常量在声明时必须初始化声明之后不能对其进行二次赋值,其后任何试图对常量进行赋值的语句都将报错。
  • 常量命名:全部大写,多个单词之间是有_分割
  • 一些数学定理中的常量经常使用final修饰(eg:π= 3.14159265358979; E= 2.718281828459045)
  • 赋值两种方式:构造方法赋值和声明时等号赋值
  • final int c=1;   static final b=1;(这里c和b的区别在于,b存放在静态空间,不会在程序运行时被释放,它永远占着内存直到程序终止,而c在程序用完它而不会再用到它的时候就会被自动释放,不再占用内存。当一个常数或字符串我们需要在程序里反复反复使用的时候,我们就可以把它定义为static final,这样内存就不用重复的申请和释放空间)
  • 5.final通常和public、static一起声明
    常量可读不可写
    使用场景:某一个变量,值是不改变,无论哪个对象调用值都是一样的,就可以用final修饰为常量

例子:


public class FinalTest {
//规范:定义常量的时候,变量名所有字母都大写,每个单词之间使用下划线
//方法1:定义常量直接赋值
public static final int USER_ROLE=1 ; //final修改属性,属性是常量,不能二次赋值
// public static final int ADMIN_ROLE ;//当使用方式二构造方法进行给常量值赋值情况 不能用static, final static 不能在构造方法中初始化
public final int ADMIN_ROLE ;

private int num;
//成员变量 所有的成员变量 每个对象都会有一个 new一个对象开内存空间,
//常量的值是不变的,没有必要开辟多个内存空间 一个就够了,多个对象共享一个常量,static保证多个对象共享一个
//一般情况 定义常量 static+final一起用

//方法2:构造函数给常量赋值
public FinalTest(int adminRole){
this.ADMIN_ROLE=adminRole;
}
public void test(){
// USER_ROLE =2; 不能第二次赋值
System.out.println(USER_ROLE);
System.out.println("ADMIN_ROLE="+ADMIN_ROLE);
}

public static void main(String[] args) {
FinalTest test =new FinalTest(6);
test.test();
System.out.println(test.USER_ROLE);
}

}
 

方法:定义必须有实现代码,并且子类里不可被覆盖。

           注意: final和abstract不能同时修饰一个方法

类:  不能被定义为抽象类或是接口,不可被继承。 

posted @ 2022-03-19 11:19  任任不买鞋子  阅读(358)  评论(0)    收藏  举报