没有合适的资源?快使用搜索试试~ 我知道了~
首页JAVA基础:内部类详解及实战应用
JAVA基础:内部类详解及实战应用
需积分: 9 2 下载量 32 浏览量
更新于2024-07-18
收藏 5.08MB DOCX 举报
本份JAVA基础课程复习材料是一份精心整理的学习资料,旨在帮助初学者巩固和复习Java编程基础知识。内容涵盖了成员内部类这一概念,它是Java语言中的一种高级特性,允许在类内部定义另一个类。成员内部类与外部类的关系如同一个函数与它的作用域,内部类(Inner)在外部类(Outer)的上下文中定义。 成员内部类的特点在于,它可以直接访问外部类的私有(private)和公共(public)成员变量,通过`Outer.this`的形式来引用。例如,在提供的代码示例中,外部类`Outer`有一个私有变量`name`和一个成员变量`age`,而成员内部类`Inner`能够直接访问这些变量,并在`show()`方法中打印它们的值。 `Outer`类中的`test()`方法用于测试成员内部类的功能,首先创建`Inner`类的实例`inner`,然后调用其`show()`方法。另外一种调用方式是在`main()`方法中,通过实例化外部类`Outer`对象并创建内部类`Inner`的新实例`Outer.Innerinner`,再直接调用`inner.show()`。 需要注意的是,为了防止形成死循环,内部类的成员方法不能直接调用外部类的方法,如在外部类`test()`中调用自己,因为这可能导致无限递归。因此,在示例代码中,尽管`test()`方法中包含了对`show()`方法的调用,但这是在外部类中执行,而不是在内部类方法中。 这份复习材料不仅提供了代码示例,还强调了理论概念的理解和实践应用,有助于学习者深入理解Java内部类的工作原理以及如何在实际项目中合理运用。无论是作为复习资料还是教学辅助工具,都能帮助读者提升Java编程技能。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/10528878/bga.jpg)
A88
class8,8extends8'8988
$ 8888void8>?898这里会报错
88888888*/>;, 的 方法;?=88
8888A88
88
A88
public8class8!8988
88
8888public8static8void8/>*+DE8+?8988
88888888new8,>?>?=88
8888A88
$ 88
A88
关键字的使用
在上一节的代码中,在子类的构造方法里使用了 super 关键字并且传入了两个参数
super>"I8?=88
在这里使用了这样的方法将卡车的商标和颜色传给父类的构造方法
public8H>*+8"I8*+8?888
然后父类的构造方法就对成员变量进行初始化
如果子类中的构造方法中没有使用 super 关键字,则子类的构造方法则会隐式调用父类的无参构造方法,
这里要注意三点。
一、在子类的构造方法中显式使用 super 关键字时,该语句只能在开头。即构造函数的第一句
二、当父类没有无参构造方法时(若父类没有写任何构造方法时,默认有一个无参构造方法),若在子类
的构造方法中使用隐式调用,则会出错(因为父类没有无参构造方法,造成的失败)
三、当子类构造方法中使用 super 关键字(包括隐式调用)调用父类构造方法时,若父类的构造方法中
又实例化了子类从而导致死循环时会报异常,例如下面这样的代码。
class82988
88882>?988
![](https://csdnimg.cn/release/download_crawler_static/10528878/bgb.jpg)
88888888new8*>?=88
8888A88
A88
class8*8extends82988
8888*>?988
$ 88888888这里默认调用父类的无参构造方法
8888A88
A88
public8class8!8988
88
8888public8static8void8/>*+DE8+?8988
88888888new82>?=88
8888A88
88
A88
不只是在构造方法中可以使用 调用父类的构造方法,还可以在成员方法中调用父类的成员方法。
例如对于上一节的代码我希望在子类的 ) 方法中调用父类的 ) 方法
void8)>?8988
88888888>?=88
88888888super)>?=88
88888888*/>;小汽车座位数J;8@8?=88
8888A88
把 1 类中的 ) 方法做这样的修改,运行结果为:
我已经开动了
商标J!颜色J,4
小汽车座位数J
我已经开动了
卡车的载重量J
发现输出了构造函数中通过 传入父类的值,这里的话,对 的位置没有指定。
$
![](https://csdnimg.cn/release/download_crawler_static/10528878/bgc.jpg)
三. final 关键字
final 修饰的类不能被继承。
final 修饰的方法不能被子类重写。
final 修饰的变量是常量,只能够赋值一次。
就不举例说明,不明白的书本 页有对应的例子
四. 抽象类与接口
抽象类
关键字 abstract8可以用于修饰类或者方法。需要知道的是,一个类如果拥有抽象方法,则这个类必须
声明为抽象类,而一个抽象类可以没有任何抽象方法。
abstract8class8'988
8888abstract8void8>?=88
8888void8>?8988
88888888*/>;' 中的 方法;?=88
8888A88
A88
88
$ class8,8extends8'988
8888void8>?8988
88888888super>?=88
88888888*/>;, 中的 方法;?=88
8888A88
A88
public8class8!8988
88
8888public8static8void8/>*+DE8+?898888888888
888888'88:88'>?=抽象类不能被实例化
$ 88888888,88:8new8,>?=88
88888888>?=88
8888A88
88
A88
剩余55页未读,继续阅读
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![xlsx](https://img-home.csdnimg.cn/images/20210720083732.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://profile-avatar.csdnimg.cn/04e3c4e4ad84416997494f1dbae59cf8_lazy_sleep.jpg!1)
Lazy_Sleep
- 粉丝: 13
- 资源: 2
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- Vue实现iOS原生Picker组件:详细解析与实现思路
- Arduino蓝牙小车:参数调试与功能控制
- 百度Java面试精华:200页精选资源涵盖核心知识点
- Swift使用CoreData填坑指南:CoreData在Swift 3.0的变化
- 微距离无线充电器创新设计及其实验探索
- MTK Android平台开发全攻略:44步详解流程
- RecyclerView全面解析:替代ListView的新选择
- Android开发:自动适配中英文键盘解决方案
- Android调用WebService接口教程
- Android开发:BitmapUtil图片处理全解析与实例
- Android多线程断点续传实现详解
- PCA算法在人脸识别会议签到系统中的应用
- EventBus 3.0:Android事件总线详解与实战应用
- Android FileUtil:全面解析文件操作实用技巧与实例
- RecyclerView添加头部和尾部实战教程
- Android实现微博滑动固定顶部栏实战与优化
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)