Java内部类

内部类可以分为:成员内部类、局部内部类、匿名类。

内部类对象依赖于外部类对象,除非已经存在一个外部类对象,否则不会出现内部类对象。

在实例化内部类对象时,必须在new操作符之前提供一个外部类对象的引用。

public static void main(String args[]){
    OuterClass out = new OuterClass();
    OuterClass.InnerClass in = out.new InnerClass();
}

 

内部类向上转型为接口:如果将一个权限修饰符为private的内部类向上转型为其父类对象,或者直接向上转型为一个接口,在程序中就可以完全隐藏内部类的具体实现过程。可以在外部提供一个接口,在接口中声明一个方法。如果在实现该接口的内部类中实现该接口的方法,就可以定义多个内部类以不同的方式实现接口中的同一个方法,而在一般的类中时不能够多次实现接口中同一个方法的,这种方法常被用于在一个类中做出多个不同的响应事件。

 

非内部类不能被声明为private或protected

 

使用this关键字获取外部类的引用:

public class OutClass{
    private int x;
    private class InnerClass{
        private int x = 9;
        public void doit(int x){
            x++;               //调用的是形参x
            this.x++;          //调用内部类的变量x
            OutClass.this.x++; //调用外部类的变量x
        }
    }
}

即使用外部类名称后跟一个点操作符和this关键字便可以获取外部类的一个引用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值