
目录
四、包和final
1、什么是包?
2、使用其它类的规则
①、规则实现
②、小结
3、final
①、示例代码
②、常量
③、练习
④、小结
五、权限修饰符和代码块
1、权限修饰符的分类
2、权限修饰符的使用规则
3、代码块
①、局部代码块(写在方法中的{})
变量只在所属的代码块中有效,最本质的作用就是:节约内存,但是现在基本上就用不上了。
②、构造代码块(写在成员位置的代码块)
③、静态代码块(重点)
④、小结
六、抽象类和抽象方法
1、什么是抽象类?
2、抽象类和抽象方法的定义格式
①、代码演示
3、抽象类和抽象方法的注意事项
4、抽象类和抽象方法的意义
5、小结
七、接口
1、为什么有接口?
2、接口的应用
3、接口的定义和使用
4、接口中成员的特点
5、接口和类之间的关系
6、接口中新增的方法
①、为什么这么设计?
②、默认方法
③、静态方法
④、私有方法(JDK9)
7、适配器设计模式
八、内部类
1、初始内部类
①、为什么要学习内部类?
②、小结
2、成员内部类
①、获取成员内部类对象
②、成员内部类如何获取外部类的成员变量
③、小结
3、静态内部类
小结
4、局部内部类(没什么用)
5、匿名内部类
①、匿名内部类的基础语法
②、匿名内部类的使用场景
③、扩展
④、小结











示例代码:



导入模块时,选择导入.imi文件

由于在Switch…case中使用数字导致代码可读性较差

那么我们可以提前定义常量来使用,从而增加可读性








优于构造方法前执行


但是这种方法不灵活,如果有重复的代码,我们会把重复的代码写在一个构造方法中,然后用this调用









练习一:编写带有抽象类的标准JavaBean类

结构图:

示例代码:(JavaBean省略)



还是代码复用的问题:



可以把接口理解成一种规则:

接口是对行为的抽象



练习一:编写带有接口和抽象类的标准JavaBean类

示例代码:(省略JavaBean)



示例代码:

测试类:

jps(内存分析工具):



练习一:编写带有接口和抽象类的标准JavaBean类

结构图:

第一个思路:

第二个思路:(最优)

示例代码:(省略JavaBean)




JDK7以前,只要接口中新增了一个方法,后续的实现类也要新增该方法的重写,很麻烦

那么新特性就是这么出现的,是在接口升级时为了兼容性而使用的


默认方法不强制被重写,public可以省略

如果实现了多个接口,且接口中存在相同名字的默认方法,子类必须强制重写


代码实现:








示例:我只想重写接口的第五个方法

InterAdapter:对接口进行空实现

然后用实现类InterImpl重写方法5即可

小结:





最好的方法就是把发动机作为Car的内部类

示例代码:




示例代码:

练习一:成员内部类 - 面试题(重名问题)

示例代码:

内部类的内存图:(内部类中有一个隐藏的this,用来记录外部类对象的地址值)




示例代码:

静态内部类方法的调用:






接口:实现关系

抽象类:继承关系

javap反编译:





对象赋值:

调用方法:

