java-内部类

        在java中运行部一个类定义位于另一个类的内部,外面的类称为外部类,里面的类称为内部类。内部类主要是为外部类服务。

注意:方法内部不能定义方法,只能调用方法

内部类按位置划分,分为三类,成员内部类(在类的内部定义一个类),局部内部类(在方法或代码快中定义一个类),匿名内部类。

一、成员内部类

        内部类访问修饰符有四个(private,默认,protected,public);

        外部类的访问修饰符有两(public,默认);

因为外部类的上一单元是包,所以外部类只有两个作用域:同包,任何位置。因此,只需要两种控制权限:包控制权限和公开访问权限,也就对应两种控制修饰符:public和默认(default)。就可以满足所有的情况了。

1.非静态内部类

        没有被static修饰的内部类。        

1)特点

在非静态内部类中不能定义static修饰的属性,方法。

非静态内部类中可以调用外部类的属性,方法。(若外部类的属性或方法与内部类属性方法同名,则可通过 外部类名.this.属性|方法();还可以访问外部类中static修饰的属性,方法。

2)非静态内部类中属性,方法的调用

在外部类中调用:

        外部类非静态方法中:直接创建内部类内部类对象,然后通过对象调用属性或方法

        外部类静态方法中:创建外部类对象,通过外部类对象根据 外部类对象.new 内部类(Outer.Inner inner = out.new Inner(); 语法创建内部类对象,之后通过内部类对象调用。

在其他类中调用:

        创建外部类对象,根据 外部类对象.new 内部类 语法创建内部类对象,通过内部类对象调用属性和方法。

2.静态内部类

        static修饰的类

1)特点

在静态内部类中,只能调用外部类中静态的属性和方法。(在静态内部类中不能使用 外部类名.this)

2)静态内部类中属性和方法的调用

调用的是静态成员,在外部类中可以直接通过 静态内部类名. 进行调用;在其他类中可以通过 外部类.内部类.静态成员

如果调用的是非静态成员,通过 外部类.内部类 对象名 =  new  外部类.内部类();创建对象 通过对象名. 调用。

 注意:内部类可以创建对象也是因为在内部类中有构造方法。如果显示添加带参构造方法,new对象的时候,必须传递参数。

2.局部内部类

        编写在方法内部的类

特点

局部内部类不可以使用访问修饰符,static进行修饰(即:局部内部类中的属性和方法都是非静态的)

局部内部类可以直接访问方法中的属性

局部内部类可以直接访问外部类中的属性和方法

3.匿名内部类

特点

匿名内部类不能定义任何静态成员,方法,和类,只能创建匿名内部类中的一个实例。一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值