final在程序中描述为终接器的概念,在java里使用final关键字可以实现以下功能:定义不能够被继承的类,定义不能被覆写的方法,定义常量(全局常量)。
范例:使用fianl定义的类不能有子类
final class Channel{} //这个类不能有子类
Channel类由于使用了final关键字,所以该类不允许有子类,实际上String类上也使用了final定义,所以String类也无法定义子类。
当子类继承了父类之后实际上可以进行父类中的方法覆写,但是不希望你的某一个方法被覆写,就可以使用final来进行定义
范例:使用final定义的方法不能被子类覆写
class a{
public final void count() {} //方法不允许被子类覆写
}
class b extends a{
public void count(){} //[错误] 该方法无法被覆写
}
a父类中的count()方法使用了final关键字定义 ,这样该方法无法在子类中被覆写。
在有的系统设计中,可能会使用1表示打开的状态,使用0表示关闭的状态。如果直接对0或1进行操作,则有可能造成状态的混乱,在这样的情况下就可以通过一些名称来表示0或者是1.在final 关键字里有一个重要的应用技术;可以利用其定义常量,常量的内容一旦定义则不可修改。
范例:使用final定义常量
public class channel1 {
private final int ON=1; //常量ON表示数字1,状态为打开。
private final int OFF=0; //常量OFF表示数字0,状态为关闭
}
常量在定义时就需要为其设置对应的内容,并且其内容一旦定义将不可更改,在java程序中为了将常量与普通成员属性进行区分,所以要求常量名称字母全部大写。
大部分的系统设计中,常量往往都会作为一些全局的标记使用,所以在进行常量定义时,往往都会利用public static final 的组合来定义全局常量。
范例:定义全局常量
public class channel1 {
public static final int ON=1; //全局常量ON表示数字1,状态为打开
public static final int OFF=1; //全局常量OFF表示数字0,状态为关闭
}
static的主要功能就是进行公共数据的定义,而同时使用final后就表示定义的常量为公共常量,在实际项目开发中会利用此结构定义相关状态码。
提示:关于常量与字符串连接
范例:全局常量与字符串连接
public class channel1 {
public static final String INFO="mldn";
public static void main(String[] args) {
String strA="www.mldn.cn";
String strB="www."+INFO+".cn";//常量连接
System.out.println(strA==strB);
}
}
true
本程序通过INFO常量实现了字符串连接操作,最终的结果就是两个String类都指向同一块堆内存。