class inner{
private int num=10;
private class outer{//在成员位置为成员内部类,一般为私有不允许访问用static修饰是为了方便访问
public void show(){
System.out.println(num);//内部类可以访问私有变量
}
}
public void showq(){//造方法访问私有内部类
outer o=new outer();
o.show();
}
}
class test{
public static void main(String[] args) {
inner i=new inner();
i.showq();
}
}
匿名内部类,方便及时回收
interface inner{
public abstract void test();
public abstract void tes();
}
class test1{
public void name() {
inner i =new inner() {//实际是抽象类的实现类或者接口的实现类,在类中重写了方法然后用类调用方法.此处用多态调用方法
public void test() {
System.out.println("xx");
}
public void tes(){
System.out.println("cc");
}
};
i.tes();
i.test();
}
}
class test{
public static void main(String[] args) {
test1 t=new test1();
t.name();
}
}
匿名内部类用处;
interface person{
public abstract void study();
}
class demo{
public void method(person p){
p.study();
}
}
class test{
public static void main(String[] args) {
demo a=new demo();
a.method(new person(){//传入的是实例,便于程序结束自动销毁,实际发生了多态,否则要找实体类new传参
public void study(){
System.out.println("匿名内部类的用处");
}
});
}
}