Java提升學習(四):final關鍵字、內部類

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表達式結合將使得代碼更簡潔,但是可讀性就複雜起來。

面向對象編程筆記完結!撒花★,°:.☆( ̄▽ ̄)/$:.°★

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章