难度
初级
学习时间
30分钟
适合人群
零基础
开发语言
Java
开发环境
- JDK v11
- IntelliJ IDEA v2018.3
提示
本教学属于系列教学,内容具有连贯性,本章使用到的内容之前教学中都有详细讲解。
1.局部内部类
在任何作用域中定义的类都称之为局部内部类。
演示:
局部内部类。
代码:
没有学习过的同学或者是不太清楚局部内部类的同学也别急,可以点击下面局部内部类学习资料来进行学习。
附:局部内部类学习资料
2.我们可以在方法内部定义接口吗?
接下来,我们来试试在方法(任意作用域都行)中定义接口。
演示:
请在Main类main()方法中定义一个接口 People 和一个局部内部类Student。
在接口People中定义一个抽象方法。
局部内部类Student实现People接口。
在main()方法中(作用域内)创建局部内部类Student对象,并调用其实现方法。
请观察程序运行结果。
代码:
Main类:
结果:
错误信息:
文字版:
从运行结果来看,我们不能在任意作用域中定义接口。简单的分析一下错误原因。
首先,来看定义在方法中的接口:
接口的定义本身没有错误,但是接口定义的位置有问题,不能定义在任意作用域内,例如此处的方法体中。
3.局部内部类实现嵌套接口
既然作用域内不能定义接口,那么我们把接口定义在类中,然后让局部内部类去实现此接口,行不行呢?来试试。
演示:
请在Main类中定义一个嵌套接口People,并在其接口中定义一个抽象方法。
在Main类main()方法中定义一个局部内部类Student,并让其实现接口People。
在main()方法中(作用域内)创建局部内部类Student对象,并调用其实现方法。
请观察程序运行结果。
代码:
Main类:
结果:
从运行结果来看,局部内部类可以实现嵌套接口。我们来简单看看程序执行过程。
首先,我们来看看嵌套接口的定义:
再来看看我们局部内部类是如何实现这个嵌套接口的:
再接着,我们就创建了局部内部类对象:
此次执行的是创建局部内部类对象,并通过局部内部类对象调用其实现方法,执行结果:
至此,程序执行完毕!
4.局部内部类实现外部接口
接下来,我们来试试局部内部类来继承内部类,看行不行。
演示:
请定义一个People接口,并在其中定义一个抽象方法。
在Main类main()方法中定义一个局部内部类Student。
让局部内部类Student实现People接口。
在main()方法中(作用域内)创建局部内部类Student对象,并调用其实现方法。
请观察程序运行结果。
代码:
People接口:
Main类:
结果:
从运行结果来看,局部内部类是可以实现外部接口的。
简单的来看一下这个程序。首先,我们来看看我们定义的接口People,里面只有一个抽象方法:
再来看我们定义的局部内部类,它实现了People接口,如果程序运行没有问题,则说明局部内部类可以实现外部接口;如果程序运行有问题,则说明局部内部类不可以实现接口:
接下来就是创建局部内部类对象,然后调用其实现方法:
执行结果:
到这里,程序执行完毕!
从此例中我们知道局部内部类是可以实现外部接口。
总结
- 接口要么作为外部接口单独存在,要么作为嵌套接口存在于类中,其他一切作用域都不能再定义接口。
- 局部内部类能实现嵌套接口。
- 局部内部类能实现外部接口。
至此,Java中局部内部类与实现接口相关内容讲解先告一段落,更多内容请持续关注。
附:类学习资料
附:抽象类学习资料
附:接口学习资料
答疑
如果大家有问题或想了解更多前沿技术,请在下方留言或评论,我会为大家解答。
上一章
下一章
“全栈2019”Java第一百零一章:局部内部类覆盖作用域内成员详解
学习小组
加入同步学习小组,共同交流与进步。
- 方式一:关注头条号Gorhaf,私信“Java学习小组”。
- 方式二:关注公众号Gorhaf,回复“Java学习小组”。
全栈工程师学习计划
关注我们,加入“全栈工程师学习计划”。
版权声明
原创不易,未经允许不得转载!