本文目錄一覽:
Java 靜態內部類作用?
1、變值許可權修飾作用,在定義內部類的時候,可以在其前面加上一個許可權修飾符static。此時這個內部類就變為了靜態內部類。
2、在某些特殊的情況下,少了這個靜態內部類還真是不行。如在進行代碼程序測試的時候,如果在每一個Java源文件中都設置一個主方法(主方法是某個應用程序的入口,必須具有),那麼會出現很多額外的代碼。
3、最主要的時這段主程序的代碼對於Java文件來說,只是一個形式,其本身並不需要這種主方法。但是少了這個主方法又是萬萬不行的。在這種情況下,就可以將主方法寫入到靜態內部類中,從而不用為每個Java源文件都設置一個類似的主方法。
這對於代碼測試是非常有用的。在一些中大型的應用程序開發中,則是一個常用的技術手段。
擴展資料
例如:
對於兩個類,擁有相同的方法:
class People{
run();
}
interface Machine{
run();
}
此時有一個robot類:
class Robot extends People implement Machine.
此時run()不可直接實現。
interface Machine{
void run();
}
class Person{
void run(){
System.out.println(“run”);
}
}
class Robot extends Person{
private class MachineHeart implements Machine{
public void run(){
System.out.println(“heart run”);
}
}
public void run(){
System.out.println(“Robot run”);
}
Machine.getMachine(){returnnew MachineHeart();
}
class Test{
publicstaticvoid main(String[] args){
Robot robot=new Robot();
Machine m=robot.getMachine();
m.run();
robot.run();
}
}
參考資料來源:百度百科-靜態內部類
在Java中什麼是內部類?
內部類就是寫在類中或方法中的類,它還是一個類,與其他類的不同就是他只為這個外部類(包含內部類的類)類所用
Java內部類有幾種?
Java中的幾種內部類:
成員內部類:作為外部類的一個成員存在,與外部類的屬性、方法並列。當某個類除了他的外部類,不會被其他類使用時應該選擇使用成員內部類。
局部內部類:局部內部類定義在外部類的某個代碼塊或方法塊中。如果只會在某個方法或塊中創建這個類的對象,就可以使用局部內部類。
匿名內部類:匿名內部類一般定義在需要傳遞介面或回調的的地方,一個匿名內部類一定是在new的後面,用其隱含實現一個介面或繼承一個類。假如只需要創建這個類的一個對象不需要知道其實際類型(不需要使用到類名),那麼就可以使用匿名內部類。
靜態內部類:和成員內部類一樣,作為外部類的一個成員存在,與外部類的屬性、方法並列,只不過在聲明類的時候加入了static關鍵字。有時候,使用內部類只是為了把一個類隱藏在另外一個類的內部,並不需要內部類引用外圍類對象。這時可以使用靜態內部類,以便取消產生對外部類的引用。
java 內部類和外部類的區別?
1. Java項目一般從src目錄開始有com…A.java這樣的目錄結構。這就是包結構。所以一般編譯後的結構是跟包結構一模一樣的,這樣的結構保證了import時能找到正確的class引用包訪問許可權就是指同包下的類可見。
import 一般加上全路徑,並且使用.*時只包含當前目錄的所有類文件,不包括子目錄。
2. 外部類只有public和default兩種修飾,要麼全局可訪問,要麼包內可訪問。
3. 內部類可以有全部訪問許可權,因為它的概念就是一個成員變數,所以訪問許可權設置與一般的成員變數相同。
非靜態內部類是外部類的一個成員變數,只跟外部類的實例有關。
靜態內部類是獨立於外部類存在的一個類,與外部類實例無關,可以通過外部類.內部類直接獲取Class類型。
想要了解更多可以跟我一起討論哦
java裡面的內部類和外部類是什麼?_?
外部類:
最普通的,我們平時見到的那種類,就是在一個後綴為.java的文件中,直接定義的類
內部類:
內部類,顧名思義,就是包含在外部類中的類,就叫做內部類。內部類有兩種,一種是靜態內部類,一種是非靜態內部類。
靜態內部類和非靜態內部類之間的區別主要如下:
1、內部原理的區別:
靜態內部類是屬於外部類的類成員,是一種靜態的成員,是屬於類的,就有點類似於private static Singleton instance = null;非靜態內部類,是屬於外部類的實例對象的一個實例成員,靜態類則是屬於所有外部共有的,也就是說,每個非靜態內部類,不是屬於外部類的,是屬於外部類的每一個實例的,創建非靜態內部類的實例以後,非靜態內部類實例,是必須跟一個外部類的實例進行關聯和有寄存關係的。
2、創建方式的區別:
創建靜態內部類的實例的時候,只要直接使用「外部類.內部類()」的方式,就可以,比如School.Teacher();創建非靜態內部類的實例的時候,必須要先創建一個外部類的實例,然後通過外部類的實例,再來創建內部類的實例,new School().Teacher()
通常來說,我們一般都會為了方便,會選擇使用靜態內部類。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/258098.html