问题:final修饰的变量能否在定义时不初始化?
首先,先看一下final可以修饰哪些东西:
final可以修饰类、变量、方法。
- final修饰的类不能被继承
- final修饰的方法不能被重写
- final修饰的变量是一个常量,只能被赋值一次
修饰的类不可继承,所以不能修饰抽象类。
那么final是否可以修饰内部类呢?
package com.newre.demo2;
public class OuterClass {
/**
* 用final修饰成员内部类
* @author newre
*
*/
final class InnerClass1 {
{
System.out.println(
"InnerClass1:I can"
);
}
}
/**
* 用final修饰静态内部类
* @author newre
*
*/
static final class InnerClass2 {
{
System.out.println(
"InnerClass2:I can"
);
}
}
public static void main(String[] args) {
/**
* 用final修饰方法内部类
* @author newre
*
*/
final class InnerClass3 {
{
System.out.println(
"InnerClass3:I can"
);
}
}
new OuterClass().new InnerClass1();
new InnerClass2();
new InnerClass3();
}
}
########################################
执行结果:
InnerClass1:I can
InnerClass2:I can
InnerClass3:I can
无论是成员内部类、静态内部类、还是方法内部类,我们可以看到三者均可以用final修饰。
让我们再看看final修饰的方法。
众所周知的是:普通方法是能被final修饰的,抽象方法不能被final修饰。
那么,静态方法是否能被final修饰?
静态方法可以存在于类中,也可以存在于方法中,所以分别试一下。
package com.newre.demo2;
public class TestClass {
public final static void test() {
System.out.println("Class FinalMethod:I can");
}
public