java内部类

序言:

在学习io时因为有需要开启一个线程,于是我写了一个MyThread,但是我发现需要调用其他类的属性与方法,于是我把需要调用的属性改为static,但是我又需要调用该类父类的非静态方法,由于这个父类是java的内置类我是无法修改的,那我就没有方法调用。于是我搜索资料,发现将MyThead定义为你需要调用属性和方法的类的内部类,就可以调用了,而我之前记得内部类似乎没有这样的特点。于是整理了内部有关的知识如下

内部类

概念:

一个类的内部有完整的嵌套了另一个类结果,被嵌套的类被称为内部类。

内部类的分类

思维导图如下:

 静态内部类与非静态内部类的区别

1)非静态内部类不允许有static修饰的属性和方法。

2)静态内部类只能访问外部类的静态属性和方法。

内部类的实际使用

1) 实现多继承
我们之前的学习知道,java是不可以实现多继承的,一次只能继承一个类,我们学习接口的时候,有提到可以用接口来实现多继承的效果,即一个接口有多个实现,但是这里也是有一点弊端的,那就是,一旦实现一个接口就必须实现里面的所有方法,有时候就会出现一些累赘,但是使用内部类可以很好的解决这些问题。

因为外部类内够访问内部类,调用内部类的属性和方法,这样可以实现另类的多继承。
2) 用匿名内部类实现回调功能
我们用通俗讲解就是说在Java中,通常就是编写一个接口,然后你来实现这个接口,然后把这个接口的一个对象作以参数的形式传到另一个程序方法中, 然后通过接口调用你的方法,匿名内部类就可以很好的展现了这一种回调功能

即在传的参数为接口类型时,使用匿名内部类,而不是在外部定义一个实现类。

3)使用成员内部类开启线程

在使用线程时,我们有时需要调用外部类的数据,甚至是一些私有数据,由于内部类可以直接调用外部类的数据,这时使用内部类不失为一种好的选择

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值