zoukankan      html  css  js  c++  java
  • final关键字

    final在程序中描述为终结器的概念,在java中使用final定义类、方法、属性
    1.使用final定义的类不能再拥有子类
    观察final定义的类、

    final class A{
    
    }
    class B extends A{
    
    }
    
    public class testDemo{
    	public static void main(String args[]){
    		
    	}
    }
    

    编译报错

    root@079a25844567:/opt/lixinghua/OOP# javac testDemo.java
    Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
    testDemo.java:4: error: cannot inherit from final A // 不能继承 A类
    class B extends A{
                    ^
    1 error
    

    一般地,开发系统类的会使用到final,如果进行架构代码的开发,也会用到final,只是使用者很少会自已定义的final类
    2.使用final定义的方法,不能被子类覆写
    在一些时候由于某些父类具备某隐藏的特性,那么子类必须使用此方法操作的时候,就加上final。意思是子类不要去破坏这个方法的重要的作用

    class A{
    	public final void get(){
    	}
    
    }
    class B extends A{
    	public void get(){
    	}
    }
    
    public class testDemo{
    	public static void main(String args[]){
    		
    	}
    }
    

    编译报错

    root@079a25844567:/opt/lixinghua/OOP# javac testDemo.java
    Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
    testDemo.java:7: error: get() in B cannot override get() in A
    	public void get(){
    	            ^
      overridden method is final
    1 error
    
    

    以上两个final对我们使用意义不大
    3.使用final定义的变量就成为了常量,常量必须在定义时设置好内容,并且不能修改

    class A{
    	final double GOOD=100.1;
    	public final void get(){
    		GOOD=1.1;
    	}
    
    }
    class B extends A{
    }
    
    public class testDemo{
    	public static void main(String args[]){
    		
    	}
    }
    

    编译报错

    root@079a25844567:/opt/lixinghua/OOP# javac testDemo.java
    Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
    testDemo.java:4: error: cannot assign a value to final variable GOOD
    		GOOD=1.1;
    		^
    1 error
    

    使用常量可以利用一些变量名称表示一些数值
    为了让常量和变量有效地区分,所有的常量名称都要求使用大写字母的方式表示
    特别需要介绍的是全局常量:public static final 声明的就是全局常量

    public static final String STR="MLDN";
    

    static 的数据保存在公共数据区,所以此处的常量就是一个公共的常量
    总结
    1.对于final定义的类或方法,一定不要继承或覆写
    2.发现public static final 定义的是全局常量的每一个字母都要求大写

  • 相关阅读:
    sqlserver2008 数据库中查询存储过程的的创建修改和执行时间,以及比较常见的系统视图和存储过程
    ASP.NET MVC 处理管线模型
    C# 四舍五入中一处易错点
    vs 快速定位文件
    动态调试JS脚本文件:(JS源映射
    EF Code First中的主外键约定和一对一、一对多关系的实现
    ws-trust、域、webservice接口的总结
    设计模式(三)装饰者模式
    设计模式(二)观察者模式
    设计模式系列(一) 策略模式
  • 原文地址:https://www.cnblogs.com/anyux/p/11904202.html
Copyright © 2011-2022 走看看