final详解

final的含义?

final:java中的关键字,意为“终态的”或者“无法改变的”。可用来修饰类、变量、方法。


变量(成员变量、静态变量、局部变量)

注意:

1、final变量即为常量,通常常量名大写。

2、final成员变量必须在声明时初始化或在构造器中初始化。 

3、静态final成员变量必须在声明时初始化。

4、局部变量必须在声明时赋值。

5、final变量赋值后不能被修改。

6、final修饰方法中的参数时,参数在方法体中不能重新赋值。

7、接口中的变量可以不用明确的声明为final,因为变量默认为public static final。

代码:

public class ClassA {
    public final String S1 = "this is S1 in ClassA";// 成员变量,声明时初始化
    public final String S2;// 成员变量,在构造器中初始化
    public static final String S3 = "this is S3 in ClassA";// 静态变量

    public ClassA() {
        S2 = "this is S2 in ClassA";
    }

    public String method1() {
        final String S = "this is method1 in ClassA";// 局部变量
        return S;
    }

    public String method2(final String S) {// final修饰方法中的参数
        return S;
    }
}

测试1:

public class MainClass {
    public static void main(String[] args) {
        ClassA a1 = new ClassA();
        System.out.println(a1.S1);// this is S1 in ClassA
        System.out.println(a1.S2);// this is S2 in ClassA
        System.out.println(a1.S3);// this is S3 in ClassA
        System.out.println(a1.method1());// this is method1 in ClassA
        System.out.println(a1.method2("test"));// test
    }
}

 


方法

注意:

1、final修饰的方法不能被子类重写。

2、final不能用来修饰抽象方法。

代码:

public class ClassA {
    public final String method1() {
        return "this is method1 in ClassA";
    }
}

测试2:

public class MainClass {
    public static void main(String[] args) {
        ClassA a1 = new ClassA();
        System.out.println(a1.method1());// this is method1 in ClassA
    }
}

 


注意:

1、final修饰的类不能被继承。

2、final不能修饰抽象类和接口。

代码:

public final  class ClassA {
    public String s1 = "this is s1 in ClassA";
}

测试3:

public class MainClass {
    public static void main(String[] args) {
        ClassA a1 = new ClassA();
        System.out.println(a1.s1);// this is s1 in ClassA
    }
}

 

posted @ 2016-11-29 14:07  SQP51312  阅读(465)  评论(0编辑  收藏  举报