关于决赛
Final的意思是“最终的,最后的”。 变量一旦被赋值,就不能再重新赋值。 由final修饰的实例变量必须显式指定初始值。
Final 修饰符通常与修饰符一起使用来创建类常量。
说到final,首先想到的是,一旦赋值是不可变的,那么就会出现相关的问题。 Final修饰变量属性的赋值方法有哪些?
非静态使用最终
非静态最终赋值有三种类型:定义初始化、非静态代码块和构造方法。
定义初始化时赋值
声明一个对象时,直接给它赋值,赋值后,它是不可变的。 这是最容易想到的事情。
public class FinalTest {
private final Integer num = 10;
}
代码块中的赋值
这种赋值不是在定义开始时进行,而是在代码块中赋值,这也是可以的。
public class FinalTest {
private final Integer num;
{
num = 10;
}
}
构造函数中的赋值
这也是很容易想到的。 创建对象时进行赋值。 对象一旦创建,就是不可变的,因此set()方法在对象创建后就不能再赋值了。
public class FinalTest {
private final Integer num;
public FinalTest(Integer num) {
this.num = num;
}
}
静态使用最终
静态最终赋值有两种类型:定义初始化、非静态代码块。
Final关键字一般与
这个时候就和上面的不同了。 静态变量是随着类的加载而加载的,因此在构造函数中不能进行初始化和赋值操作。
定义初始化
public class FinalTest {
private static final Integer num = 10 ;
}
静态块
public class FinalTest {
private static final Integer num;
static {
num = 10;
}
}
关于fianl的补充说明
父类中的final方法可以被子类继承,但不能被子类重写。
声明final方法的主要目的是防止方法的内容被修改。
class Father{
public final void methodTest(){
return;
}
}
class Son extends Father{
//调用父类final方法
public void test(){
this.methodTest();
}
}
Final 类不能被继承,并且任何类都不能继承 Final 类的任何属性。