一:final关键字
*final关键字可以用于修饰类、变量和方法,他有“这是无法改变的”或者“最终”的含义,因此final修饰的类、变量和方法将具有以下特性:
··final修饰的类不能被继承
··final修饰的方法不能被子类重写
··final修饰的变量(成员变量和局部变量)是常量,只能赋值一次
二:final关键字修饰类
*java中的类被final关键字修饰后,该类将不可被继承,也就四不能派生子类。
·final class Animal {方法体为空}
·class Dog extends Animal{方法体为空}
·class Example06{
public static void main(String[] args){
Dog dog=new Dog();
}
}
···以上代码,在编译是报错,由此可见被final关键字修饰的类是最终类,不能被其他类继承。
三:final关键字修饰方法
*当一个类的方法被final关键字修饰后,这个类的子类将不能重写该方法
package com.huanghe1;
public class Animal {
public final void shout(){
}
}
package com.huanghe1;
public class Dog extends Animal {
//重写父类的继承方法
public void shout(){
}
}
package com.huanghe1;
public class Demo {
public static void main(String[] args){
Dog dog=new Dog();
dog.shout();
}
}
···编译时,标记的地方就会报错。当父类的方法不希望给子类重写的时候,就可以使用final关键字修饰该方法
四:final关键字修饰变量
*java中被final 修饰的变量为常量,它只能被赋值一次,也就说final修饰的变量一旦赋值,就不能被改变,如果再次对该变量进行赋值,则程序会在编译时报错。
··final int num =0;
·· num=1;//这个时候就会报错。
*final关键字修饰成员变量,使虚拟机不会对其进行初始化,因此使用final修饰成员变量的时候,需要在定义的同时赋予一个初始值;
···final Sting name;//这个时候就会报错,因为没有赋值,也就是初始化