final 修饰符 如何使用?

来源:互联网 发布:ubuntu 开机脚本 编辑:程序博客网 时间:2024/06/05 16:12

Final :

     1: 修饰整个类:

           表示该类不能被继承

             (如果认为一个类已经很完美不需要定义子类来继承它)

        格式: public final class A(**********)

        格式: public 和final 可以互换

     2:修饰类中的若干个属性

            @final修饰类中的属性必须被赋值,而且只能赋值一次(默认值不算)

            @final属性赋值有2种方式(2种不能同时使用)

                     在定义成员变量同时初始化

                     在类中所有的构造函数中初始化

 

  注意: 一个类的所有普通方法内部都不可以修改final修饰过的成员变量的值

     3:修饰类中的若干个方法

                表示该方法可以被子类继承,但是不能被子类重写

 

/*final类型修饰的属性必须在定义的同时初始化如果final类型修饰的属性没有在定义的同时初始化,则必须在该类中的所有构造函数中完成初始化不过这两种初始化只能存在一种,否则编译时会报错!因为final表示常量的意思,常变量当然不能被初始化两次了*/class Point{int x;final double PI = 1.9; //10   final定义的变量必须在定义的同时初始化  如果这里只定义不初始化则我们就必须在所有的构造函数中完成对final变量的初始化  不过这两种方式只能选择其中的一种Point(){//PI = 1.234;  //只要10行对PI进行了初始化,本语句就必须的被注释掉,否则编译时会报错!}Point(int m, int n){//PI = 2.33;  //只要10行对PI进行了初始化,本语句就必须的被注释掉,否则编译时会报错!}void output(){//PI = 2;  //error   因为“一个类的所有方法内部都不可以修改final修饰过的成员变量的”System.out.printf("%d %f\n", x, PI);}public static void main(String[] args){Point pt = new Point();pt.output();}}/*在JDK 1.6中的运行结果是:-----------------0 1.900000-----------------*/


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原创粉丝点击