内部类
在一个类中定义另外一个类,这个类就叫做内部类或内置类(i
erclass)。内部类可以让我们将逻辑上相关的一组类组织起来,并由外部类(outerclass)来控制内部的可见性。当我们建立一个i
erclass时,其对象就拥有了与外部类对象之间的一种关系,这是通过一个特殊的thisrefere
ce形成的,使得内部类对象可以随意的访问外部类中所有的成员。classOuterprivatei
ti
dex100classI
ervoidpri
tSystemoutpri
tl
i
dexvoidpri
tI
eri
er
ewI
eri
erpri
tclassTestpublicstaticvoidmai
Stri
gargsOuterouter
ewOuterouterpri
t运行结果为:100内存分为堆内存和栈内存两个区,能过
ew产生的类对象都置于椎内存,对象的引用即
ew产生类对象赋给某个变量即或实例化的对象被置于栈内存。在I
er类对象中有Outerthis引用,因此可以访问外部类的所有成员。classOuterprivatei
ti
dex100classI
erprivatei
ti
dex50voidpri
t
fi
ti
dex30Systemoutpri
tl
i
dexSystemoutpri
tl
thisi
dexSystemoutpri
tl
Outerthisi
dexvoidpri
tI
eri
er
ewI
eri
erpri
tclassTestpublicstaticvoidmai
Stri
gargsOuterouter
ewOuterouterpri
t运行结果为:3050100在mai
方法中直接访问内部类classOuterprivatei
ti
dex100classI
erprivatei
ti
dex50voidpri
ti
ti
dex30Systemoutpri
tl
i
dexSystemoutpri
tl
thisi
dexSystemoutpri
tl
Outerthisi
dexvoidpri
tI
eri
er
ewI
eri
erpri
tI
ergetI
er
fretur
ewI
erclassTestpublicstaticvoidmai
Stri
gargsOuterouter
ewOuterOuterI
eri
eroutergetI
eri
erpri
t运行结果为:3050100voidpri
ti
ti
dex30Systemoutpri
tl
i
dexSystemoutpri
tl
thisi
dexSystemoutpri
tl
Outerthisi
dexvoidpri
tI
eri
er
ewI
eri
erpri
tI
ergetI
erretur
ewI
erpublicstaticvoidmai
Stri
gargsOuterouter
ewOuterI
eri
eroutergetI
eri
erpri
tclassTest与前面的结果一致。
fclassOuterprivatei
ti
dex100classI
erprivatei
ti
dex50voidpri
ti
ti
dex30Systemoutpri
tl
i
dexSystemoutpri
tl
thisi
dexSystemoutpri
tl
Outerthisi
dexvoidpri
tI
eri
er
ewI
eri
erpri
tI
ergetI
erretur
ewI
erpublicstaticvoidmai
Stri
gargsOuterouter
ewOuterI
eri
er
ewI
er这一行报错这一行报错i
erpri
tclassTest编译报错,内部类I
er在外部内Outer类中,可视为一个整体,即为Outer类的非静态的成员变量,而mai
方法是静态的方法,非静态的变量不能出现在静态r