局部內部類


1、語法格式

【修飾符】 class 外部類 【extends 外部類的父類】【implements 外部類的父接口們】 {
    【修飾符】 返回值類型 方法名(【形參列表】){
        【其他修飾符】 class 局部內部類名 【extends 內部類的父類】【implements 內部類的父接口們】{
        }
    }
}
public class Outer{
	public void method(){
        class Inner{
       
    	}  
    }      
   
}

  

2、特點

(1)局部內部類也是類,

A:也有自己的字節碼文件:外部類名$編號局部內部類名.class

B:它可以繼承自己的父類,實現自己的父接口們

C:它可以有自己的各種成員:屬性、方法、構造器、代碼塊、內部類

注意:不能有靜態成員

(2)局部內部類可以使用外部類的成員

至於是否可以使用外部類的非靜態的成員,要看局部內部類所在的方法是否是靜態的,如果是靜態的就不能用,其他的可以。

(3)在外部類中使用局部內部類,要看作用域

(4)在外部類的外面不能直接使用局部內部類,但是我們可以得到局部內部類的對象

如何在外部類的外面獲取局部內部類的對象?

interface MyInter{
    
}
public class Outer{
	public Object method(){
        class Inner{
       
    	}  
        return new Inner();
    }     
    public MyInter test(){
        class Inner implements MyInter{
            
        }
        return new Inner();
    }
}

Outer out = new Outer();
Object in = out.method();
MyInter in2 = out.test();

  

(5)局部內部類都可以有什么修飾符

C:final

D:abstract

(6)在局部內部類中可以使用外部類的局部變量,但是這個局部變量必須加final

因為局部內部類的對象可以被返回到外部類的外面進行使用,如果不是final的,這個局部變量在方法結束后就消失了,那么再通過局部內部類的對象使用這個變量就有問題了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM