Java——final关键字

3.3 final关键字

3.3.1 final的定义

在Java中声明类、属性和方法时,可使用关键字final来修饰,表示“最终”。

final标记的类不能被继承。提高安全性,提高程序的可读性。

String类、System类、StringBuffer类

final标记的方法不能被子类重写。

Object类中的getClass()。

final标记的变量(成员变量或局部变量)即称为常量。名称大写,且只能被赋值一次。

final标记的成员变量不能使用默认初始化,必须在声明的同时或在每个构造方法中或代码块中显式赋值,然后才能使用。final double PI=3.14;

变量用static final修饰:全局常量。比如:Math 类的PI。

④要与finally finalize()区分开。

3.3.2 final基础语法

final修饰类

final class A{

}

class B extends A{     //错误,不能被继承。

}

中国古代,什么人不能有后代,就可以被final声明,称为太监类

final修饰方法

class A{

       public final void print(){

                System.out.println(“A”);

       }

}

class B extends A{    

        public void print(){   //错误,不能被重写。

                  System.out.println(“尚硅谷”);

         }

}

final修饰变量——常量

class  A{

        private final String INFO = “atguigu”;  //声明常量

        public void print(){

                  //INFO = “尚硅谷”;

         }

}

常量名要大写,内容不可修改。——如同古代皇帝的圣旨。

 

final修饰的成员变量:一般和static联用。

class MyMath{

       //常量.java规范中要求所有的常量“大写”

       //常量:值不可再改变的变量.

       public static final double PI = 3.14;

}

⑤关键字final应用举例:

public final class Test{

              public static int totalNumber = 5 ;

              public final int ID;

              public Test(){

                     ID = ++totalNumber;  //可在构造方法中给final变量赋值

              }

            public static void main(String[] args) {

                     Test t = new Test();

                     System.out.println(t.ID);             

                     final int I = 10;

                     final int J;

                     J = 20;

                     J = 30;  //非法

                  }

}

 

 

⑥深入final

final修饰的引用类型,该引用不可再重新指向其他的java对象。但是fianl修饰的引用,该引用指向的对象的属性是可以修改的。

public class Test02{

       public static void main(String[] args){

              final Customer c = new Customer("JACK",15);

              //c是final的,无法重新赋值。

              //c = new Customer("LUCY",20);//Error

              c.name = "李四";

              c.age = 25;

              System.out.println(c.name);

              System.out.println(c.age);

       }

}

class Customer{

       String name;

       int age;

       Customer(String name,int age){

              this.name = name;

              this.age = age;

       }

}

posted @ 2019-11-09 10:25  阿江是个程序猿  阅读(241)  评论(0编辑  收藏  举报