1。類中定義內(nèi)部類
public class Outer {
private int outer_i = 100;//內(nèi)部類可以訪問外部類的變量
void test(){
Inner inner = new Inner();
inner.display();
}
//當(dāng)一個(gè)類中的程序代碼要用到另外一個(gè)類的實(shí)例對象,
//而另外一個(gè)類的程序代碼又要訪問第一個(gè)類的成員時(shí)
// 將另外一個(gè)類作成第一個(gè)類的內(nèi)部類。
class Inner{
private int inner_i;
//內(nèi)部類的成員只有在內(nèi)部類的范圍之內(nèi)是可知的,
//并不能被外部類使用
void display(){
System.out.println("display: outer_i = " + outer_i);
}
}
}
public static void main(String[] args) {
Outer outer = new Outer();
outer.test();
}
2.
public class Outer {
private int size = 1;
public void print(){
Inner inner = new Inner();
inner.method(11);
}
public class Inner{
private int size = 3;
public void method(int size){
size++;//method的形參
this.size++;//Inner類中的成員變量
Outer.this.size++;//Outer類中的成員變量
System.out.println("method size is :" +size);
System.out.println("Inner size is :" + this.size);
System.out.println("Outer size is :" + Outer.this.size);
}
}
public static void main(String[] args){
Outer outer = new Outer();
outer.print();
}
}
3.內(nèi)部類被外部引用
public class Outer {
private int size = 10;
//內(nèi)部類聲明為public 可從外部類之外被調(diào)用
public class Inner{
public void print(){
System.out.println(++size);
}
}
}
public class test {
public static void main(String[] args) {
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
inner.print();
}
}
4.方法中定義內(nèi)部類
public class Outer {
int outer_i = 100;
String str = new String("Between");
void test(){
for(int i=0; i<5; i++){
class Inner{
void display(){
System.out.println("display: outer_i = " + outer_i);
}
}
Inner inner = new Inner();
inner.display();
}
}
//在方法中定義的內(nèi)部類只能訪問方法中的final類型的局部變量
//因?yàn)橛胒inal定義的局部變量相當(dāng)于一個(gè)常量,她的生命周期超出了方法運(yùn)行的生命周期
public void amethod(final int iArgs){
int it315;//此變量內(nèi)部類不能訪問
class Bicycle{
public void sayhello(){
System.out.println(str);
System.out.println(iArgs);
}
}
Bicycle bicycle = new Bicycle();
bicycle.sayhello();
}
}
public static void main(String[] args) {
Outer outer = new Outer();
outer.test();
outer.amethod(18);
}