一、內部類的概念:
1.將乙個類定義在另乙個類的裡面,對裡面那個類就稱為內部類,或者叫做內建類,巢狀類。
2.訪問特點:內部類可以直接訪問外部類中的成員,包括成員變數和成員方法,也包括私有成員;而外部類要訪問內部類中的成員必須要建立內部類的的物件:**體現如下:
class innerclassdemo
}class outer
}void method()}
二、內部類的位置
1、成員變數位置上,那麼可以被private static成員修飾符修飾,具體功能屬性等可以參考成員變數。而且被static修飾後的內部類只能訪問外部類中的靜態變數,就是你是靜態的,你只能訪問靜態的,因為靜態的是隨著類的載入而被載入的,而非靜態的是隨著物件的建立而被封裝的,所以它優先於靜態而存在。
static:訪問受到限制:
private:將內部類封裝在了外部類中,不能為外部其他類之間訪問
如果沒有私有化,外部類可以直接訪問到內部類,格式如下:
外部類名、內部類名變數名=外部類物件、內部類物件;
outer.inner in=new outer().new inner();
外部類直接訪問靜態內部類中的非靜態成員:
new outer.inner.function();注意建立的是內部類的物件
外部類直接訪問靜態內部類中的靜態變數:
outer.inner.function();可以直接用類名訪問靜態成員;
注意:該內部類中的成員是靜態的,那麼類也應該是靜態的。
如果外部類靜態成員訪問該內部類成員時,內部類必須是靜態的,否則無法訪問;
2.在區域性位置上,可以直接訪問外部類中的成員,同時可以訪問所有區域性中的區域性變數,但必須是被final修飾的,具體**如下:
class innerdemo
}class outer }
new inner().method();}}
//程式執行過程:首先main主函式、外部類outer()構造方法,建立乙個物件,將位址給引用ou,然後該物件呼叫outer中的方法show();然後程式執行show(),內部類建立了乙個物件,然後呼叫裡面的method()方法,然後method()方法用呼叫被final修飾的區域性變數。
也可以向show(final int a)傳遞乙個final型別的引數,一樣列印,因為都是區域性變數:
3.匿名內部類,其實就是一種簡寫形式,它的前提是內部類必須繼承乙個其他外部父類或者介面,它是乙個帶內容的物件。**體現如下:
class innerclassdemo1
}abstract class abs
class outer
void abs()
};//這是乙個帶內容的匿名物件,使用父類的名稱建立。
b.show();//自己在建立物件的同時又重寫了父類中的內容,然後自己再呼叫
b.abs();}}
內部類的應用
內部類分為三個型別 成員內部類,區域性內部類,匿名內部類 第一 成員內部類,在類的成員位置,和類的成員變數和成員方法位置是一樣的。演示 public class neibulei class outer class inner class outer2 static class inner2 第二 ...
內部類 匿名內部類及應用
public class anonymousinner 多次呼叫匿名內部類的話把匿名內部類物件賦值給引用變數 animal cat new animal p.feed cat 匿名內部類物件可以呼叫自身的方法,下面的 除了實現父類animal的eat方法,還擁有自己的show方法,在建立了之後,就可...
Java內部類應用 靜態內部類
一 點睛 如果使用static來修飾乙個內部類,則這個內部類就屬於外部類本身,而不屬於外部類的某個物件。因此使用static修飾的內部類被稱為類內部類,也稱為靜態內部類。static關鍵字不可修飾外部類,但可修飾內部類。二 實戰 靜態內部類不能訪問外部類的例項成員,只能訪問外部類的類成員 1 點睛 ...