Java提升學習(四):final關鍵字、內部類
一、final關鍵字
final
關鍵字以爲:不可改變的。可用於修飾類、方法和變量。
- 當被修飾類的時候,類不可被繼承。
- 當被修飾方法的時候,不可被覆蓋重寫。
- 當被修飾變量的時候,不可被賦值。
修飾類:
public final class 類名 {
}
修飾方法:
修飾符 final 返回值類型 方法名(參數列表){
//方法體
}
當方法被@Override重寫的時候,就會報錯。
修飾變量
public class FinalDemo1 {
public static void main(String[] args) {
// 聲明變量,使用final修飾
final int A;
// 第一次賦值
A = 10;
// 第二次賦值
A = 20; // 報錯,不可重新賦值
// 聲明變量,直接賦值,使用final修飾
final int B = 10;
// 第二次賦值
B = 20; // 報錯,不可重新賦值
}
}
被final
修飾的常量名稱,一般都有書寫規範,所有字母都大寫。
二、內部類
將一個類A包含到另一個類B中,A稱爲內部類,B稱爲外部類。
class B {
//外部類
class A {
//內部類
}
}
- 定義:
外部類名.內部類名 對象名 = new 外部類型().new 內部類型();
- 訪問特點:
內部類可以直接訪問外部類的成員,包括私有成員。
外部類要訪問內部類的成員,必須要建立內部類的對象。
public class first {
final int NUM = 1 ;
public class first_o1{
public void methodo1(int num) {
System.out.print(NUM);//注意,這裏前往別用this.NUM來調用
System.out.print(num);
}
}
public void methodo2(int num) {
System.out.print(num);
}
}
public class text {
public static void main(String[] args){
first a = new first();
first.first_o1 b = new first().new first_o1();
b.methodo1(3);
a.methodo2(4);
}
}
//------------輸出------------
134
- 匿名內部類
是內部類的簡化寫法。它的本質是一個帶具體實現的 父類或者父接口的 匿名的
子類對象。
匿名內部類必須繼承一個父類或者實現一個父接口。
new 父類名或者接口名(){
// 方法重寫
@Override
public void method() {
// 執行語句
}
};
示例:
public abstract class first {
public abstract void method();
}
public class text {
public static void method_q(first a) {
a.method();
}
public static void main(String[] args){
method_q(new first() {
@Override
public void method() {
System.out.print("hahaha");
}
});
}
}
//------------輸出-------------
hahaha
匿名內部類的優點是原來調用抽象方法得起碼三步,建立父類,繼承父類,調用子類並實例化。然而這裏雖然本質不變,但是代碼比原來少了很多。若和lambda表達式結合將使得代碼更簡潔,但是可讀性就複雜起來。
面向對象編程筆記完結!撒花★,°:.☆( ̄▽ ̄)/$:.°★ 。