内部类

内部类:(即在类的内部定义另一个类)

例如:在类Outer的内部再定义一个类Inner,此时Inner就称为内部类,Outer就称为外部类。

1.内部类的定义格式:

public class 外部类{

      public class 内部类{

                }

}

2.内部类在编译完成后也会产生.class文件,而文件的名称则是“外部类名称$内部类名称.class”

3.使用内部类的原因 

例如:心脏属于人身体的一部分,但是心脏不能简单的用属性和方法去表示,因为心脏也有属于自己的属性和方法,所以需要写在人“类”的内部。

4.使用内部类的好处:可以方便的访问外部类的私有属性

缺点降低了程序的可读性

内部类分为四种:成员内部类、静态内部类、局域内部类、匿名内部类

A.成员内部类

a.成员内部类中不能定义static变量

b.成员内部类持有外部类的引用

c. 在文件管理方面,成员内部类在编译完成后也会产生 .class文件,而文件名称则是 外部类名称 $内部类称 .class”
d.外部实例化成员内部类的格式:外部类.内部类  内部类对象=外部类实例.new 内部类();
B.静态内部类
a.如果一个内部类使用static声明,则此内部类就称为静态内部类,其实也相当于外部类。可以通过外部类.内部类来访问。
b.静态内部类不会持有外部类的引用,创建时可以不用创建外部类对象
c.静态内部类可以访问外部的静态变量,如果 访问外部类的非static成员变量必须通过外部类的实例访问
d.外部实例化静态内部类对象的格式:

外部类.内部类  内部类对象= new 外部类.内部类();

C.局域内部类

a.局内部类是定义在一个方法中的内嵌类,所以类的作用范围仅限于该方法中,而类生成的对象也只能在该方法中使用。

b.局域内部类不能包含静态成员

c.局域内部类要想访问包含其的方法中的参数,则方法中的参数前必须加上final关键字(JDK<=1.7),JDK1.7之后可以直接访问

D.匿名内部类

如果一个内部类在整个操作中只使用一次的话,就可以定义为匿名内部类

注意:如果一个内部类在整个操作中只使用一次的话,就可以定义为匿名内部类没有名字的内部类,这是java为了方便我们编写程序而设计的一个机制,因为有时候有的内部类只需要创建一个它的对象就可以了,以后再不会用到这个类,这时候使用匿名内部类就比较合适。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值