JAVA-内部类及匿名内部类解读

package test10;
//无论内部类是公开还是私有都不能被继承,因为它不是属性,也不是方法。而是一个内部事务的描述。

public class Demo {
    public static void main(String[] args) {
        Pm p=new Pm(){//匿名内部类必须实现一个接口或者继承一个类,必须重写接口和类中的抽象方法
            public void show() {

            }
            void fly(){

            }

        };
        System.out.println(p.a);//引用能调用什么,要看引用类型里面有什么
        p.show();
//      p.fly();编译错误

        Foo.Aoo FA=new Foo().new Aoo();//实例化成员内部类
        FA.show();//调用成员内部类的方法

        Pm.Inner PI=new Pm.Inner();//实例化接口内部类
        Foo ff=new Foo();
        ff.cop();
    }
}
interface Pm {//接口
    final int a=9;
    void show();
    class Inner {//接口内部类--默认是public static

    }
}
class Foo {//外部类
    private int a;

    void cop(){
         int A=3;
        class Boo {//方法内部类--也可以直接访问外部类的成员变量和方法
            void kk(){}
            void shoe() {
                a=9;//可以写成Foo.this.a=0;
                cop();
                System.out.println(A);//方法内部类能访问被final局部变量,
                kk();
            }
        }
    }

    class Aoo {//成员内部类--可以直接访问外部类的成员变量和方法
        void show() {
            a=0;//可以写成Foo.this.a=0;
            cop();//可以写成Foo.this.cop();
        }
    }

    static class Coo {
        void sh() {
//          cop();//不能访问外部类的非静态变量
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰河家园

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值