java内部类

先来简单介绍一下内部类的定义。所谓的内部类就是在一个类的内部进行其他的类的嵌套操作。内部类的结构看起来更为复杂,那为什么还要用内部类呢?原因有三:

1:内部类可以访问外部类的属性,包括私有属性,而外部类也同样可以访问内部类的属性(包括私有属性);

2 :内部类可以对同一包中的其他类隐藏起来;

3 :内部类还可以解决java中的单继承局限;

这就是内部类之所以存在的原因了。内部类与外部类的关系有以下几点:

1:对于非静态内部类而言,创建一个内部类对象需要依赖外部类的实例对象,在没有外部类的实例对象之前是不能创建内部类对象的;

2:内部类是一个独立的个体,他与外部类之间不是is-a关系;

3:内部类可之间访问外部类的元素(包括私有域),外部类不能直接访问内部类的元素;

4:外部类通过内部类引用来间接访问内部类元素。(即创建一个内部类对象,通过对象来访问)

创建非静态类的语法:

Outter.Inner in = new Outter().new Inner();

 其中 new Outter()是创建外部类的实例对象。Outter.this.属性 / /  表示外部类当前对象的属性

内部类主要分为成员内部类、静态内部类、方法内部类和匿名内部类。下面对这几个类做一个简单介绍:

1:成员内部类,它可以访问外部类的静态属性,但是不能拥有自己的静态变量和方法。创建对象时要依赖外部类。

2:静态内部类,恰恰与成员内部类相反。静态内部类可以拥有自己的普通方法,普通属性但是不可以访问外部类的普通方法,普通属性,只可访问外部的静态方法与属性。他创建实例对象的语法如下:

Outter.Inner in = new Outter.Inner();

3:方法内部类:(可以看做是成员内部类)对于方法内部类来说,是不允许有任何的访问修饰符的(静态内部类可以加static与private修饰符,成员内部类可以加private修饰符(仅供外部类使用));对方法外完全隐藏,除该方法外,其余均不能使用;该内部类要想使用方法中的形参,则必须在方法的形参上加上final关键字(JPK1.8之后变为隐式final声明)

注:加final声明是因为方法的空间在栈上,而类对象在堆上,不能方法退出后类对象还可继续修改变量值,所以用final修饰,使其值不可更改。

4:匿名内部类:(方法内部类的特殊版本)匿名内部类必须继承一个类或者实现一个接口,他没有类名,所有没有构造方法;匿名内部类中也不能存在静态方法与变量。

以上就是我对内部类的一些粗浅见识,欢迎各位大佬指正!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值