Java内部类

通常情况下,把不同的类组织在不同的包下,对于一个包下的类来说,它们父子关系。但是,还有一种类,它被定义在一个类的内部,被称为内部类。Java中的内部类分为以下几种:

1、成员内部类

语法格式:

[修饰符] class 外部类{
    [修饰符] class 内部类{    }
}

成员内部类特点:

成员内部类可以无条件访问外部类的所有成员属性和成员方法(private和static);

如果要访问外部类的同名成员,访问方式有两种:一是外部类.this.成员变量,二是外部类.this.成员方法;

在外部类中要访问内部类的成员,必须先创建一个成员内部类的对象,再通过指向这个对象的引用来访问;

内部类的对象实例不能单独存在,必须依附于一个外部类的对象实例

内部类可以拥有四种权限修饰符和final修饰符;

成员内部类不能存在static的变量和方法,可以定义常量;

成员内部类编译后也会生成一个.class文件,文件名是外部类名$内部类名.class

实例化方式:Outer outer = new Outer();

                      Outer.Inner inner = outer.new Inner();

2、局部内部类

语法格式:

[修饰符] class 外部类{
    [修饰符] 返回值类型 方法名([形参列表]){
            [final/abstract] class 内部类{
        }
    }    
}

局部内部类特点:

局部内部类就像方法里面的一个局部变量一样,不能有public,protected,private和static;

局部内部类只能访问局部final变量

局部内部类在定义域内多次使用,但是只能在声明它的那个方法里使用

局部内部类编译后会生成一个.class文件,文件名是外部类名.编号局部内部名。

3、匿名内部类

语法格式:

new 父类名或者接口名(){   
    // 方法重写
    @Override 
    public void method() {
        // 执行语句
    }
};

匿名内部类特点:

一般使用匿名内部类的方法来编写四件监代码;

匿名内部类不能有访问修饰符和static;

匿名内部类是唯一一种没有构造器的类;

匿名内部类只能在定义处使用一次

4、静态内部类

语法格式:

[修饰符] class 外部类{    
    [其他修饰符] static class 内部类{    }
}

静态内部类特点:

不需要依赖于外部类,不能使用外部类的非static成员变量(方法);

静态内部类可以使用四种权限修饰符和final修饰符。

实例化方式:StaticOuter.StaticInner staticInner = new StaticOuter.StaticInner();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值