辰歆

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

final(终结器)可用来定义方法、属性和类。

一、final定义的类不能够被继承(既不能够有子类)

//错误示例
final
class A {} class B extends A{}

二、final定义的方法不允许被子类所覆写

//错误示例
class A {
    public final void fun(){}
}
class B extends A {
     public void fun(){}
}

三、final定义的属性不可更改,且必须在声明时赋值

//错误示例
class A {
    public final int NUMBER = 4;

    public final void fun(){
    NUMBER = 3;
    }
}

常量的标识符默认大写

四、总结

被final 关键字所声明过的引用将不能被再次改变。

对于基本数据类型,该引用为其值,及数据的值不允许改变;

而对于引用数据类型,该引用为其地址,地址不允许改变,但地址所指向的内容却依旧可以改变(如被final定义的对象依旧可以通过setter方法改变对象的属性)。

class A {
    
    private int num = 999;
    public void setNum(int num) {
        this.num = num;
    }
    public int getNum() {
        return num;
    }
}
public class B {
    final static A EXAMPLE = new A();
    public static void main(String[] args) {
        //修改前
        
        System.out.println(EXAMPLE.getNum());
        //修改后
        EXAMPLE.setNum(666);
        System.out.println(EXAMPLE.getNum());

    }
    
}

 

特殊的,String为引用数据类型,但其本身就是不可变的,故用final定以后就和基本数据类型一样了。

posted on 2018-04-01 14:07  辰歆  阅读(125)  评论(0编辑  收藏  举报