Java中的内部类

所谓的内部类,就是在一个类中在定义一个类,包含内部类的类称为外部类。Java中一共有四种内部类:成员内部类,静态内部类,方法内部类,匿名内部类。内部类的意义是内部类和外部类可以方便访问彼此的私有域,内部类也是一种封装的表现,且内部类可以使用private关键字,内部类还能变相实现多继承。

1.成员内部类:

  成员内部类的定义跟普通类没有什么区别,只是把这个类,定义在一个外部类里面,可以把成员内部类当成一个外部类的普通成员进行看待。成员内部类的里也可以有成员变量和成员方法,和普通类的定义并没有本质上的区别。成员内部类和外部类之间可以相互访问其属性,包括私有的属性。我们知道一个类的一个成员被private修饰之后,不能直接访问,只能本类可见,出了这个类需要通过get和set方法进行操作,但是因为成员内部类是外部类的一个属性,在外部类里面,所以内部类可以访问外部类的私有属性和方法。成员内部类必须依赖外部类才能存在,需要先产生外部类对象才能有内部类对象。

2.静态内部类:

内部类使用static修饰的类为静态内部类,静态内部类和外部类的关系其实是相互独立的,不需要外部类对象,外部类可以访问静态内部类的属性和方法,但是静态内部类不能直接访问外部类的成员属性和成员方法,因为我们知道要想访问成员属性和成员方法我们需要对象,但是我们静态内部类和外部类不是依赖关系,而是独立的状态,可以理解成静态内部类只是一个普通类嵌套在外部类中。所以静态内部类并没有外部类对象,所以不可以访问外部类的成员属性和成员方法,但是可以访问外部类的静态属性和静态方法,因为他们不依赖于外部类对象。那为什么外部类可以直接访问静态内部类的方法和属性呢,因为静态的类,我们可以不通过对象直接进行访问,更何况我们已经有了外部类对象。

3.方法内部类:

定义在方法中的类被称为方法内部类,方法内部类不能有任何权限修饰符,因为出了这个方法之后,这个类就消失了,对外部类的外部可以做到完全隐藏。方法内部类调用外部类的形参或者局部变量的时候,只能进行读取操作,不能进行修改操作。最后方法内部类不能定义静态域。

4.匿名内部类:

匿名内部类其实也是方法内部类,通常作为方法的形参或者实参,实参居多,匿名内部类是方法内部类的一种特殊情况。匿名内部类没有任何权限修饰符,甚至连类名称都没有,匿名内部类的用法像是多线程创建线程的时候,我们一般都是继承Thread类和实现Runnable接口,但是会比较麻烦,我们直接使用匿名内部类的方法就可以省略一些步骤。实现Comparator接口的时候,我们也是使用到了匿名内部类,所以匿名内部类应用还是比较广泛的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值