package com.kk.innerClass;
class Outer {
private int index = 100;
class Inner {
int index=200;
void print() {
int index=300;
//内部类中可以访问外部类的私有成员变量及方法
System.out.println(index);
System.out.println(this.index);
System.out.println(Outer.this.index);
}
}
Inner getInner(){
{
class Inner2{ //如果将内部类放在方法或语句块中,外部将不能实例化
}
}
return new Inner();
}
Inner getInner(final int i){
class Inner3{
void getParameter(){
System.out.println(i); //在方法中定义的内部类,如果要访问方法中定义的本地变量或方法的参数,则变量必须被声明final。
}
}
return new Inner();
}
void print() {
Inner inner = new Inner();
inner.print();
}
public static void main(String[] args) {
Outer outer=new Outer();
outer.print();
Outer.Inner inner=outer.getInner();
inner.print();
//实例化内部类
Outer outer2=new Outer();
Outer.Inner inner2=outer2.new Inner();
inner2.print();
}
}