fina修饰符的用途
一、修饰类
final类不能被继承
二、修饰方法
final方法可以被继承,但是不能被子类重写
三、修饰类属性(int,double等)
特别注意,类似于c++const,被final修饰的属性必须进行初始化,因为要构造后将不能再更改
1、在定义的时候就初始化。
2、在构造函数中初始化。
final class A{
}
class C{
// final修饰的属性要么在定义的时候初始化,
//要么在构造函数中初始化,否则会出错,因为在后续就无法赋值了
// 1、构造函数初始化法
final int j;
C(int j){
this.j=j;
}
// 2、直接初始化法
// final int j=1;
final void f(){
System.out.println("ccc");
}
}
// 抽象类不能被继承
/*
class B extends A{
}
*/
class D extends C{
D(int j){
super(j);
}
// 错误,无法覆盖C中的final方法,final方法并不是不能被继承,而是被继承后无法被重写,
/*
void f(){
System.out.println("DDD");
}
*/
}
public class final_Test{
public static void main(String[] args) {
D dd=new D(1);
dd.f();
}
}