
目录
四、包和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、匿名内部类
①、匿名内部类的基础语法
②、匿名内部类的使用场景
③、扩展
④、小结
四、包和final
1、什么是包?

2、使用其它类的规则


①、规则实现



②、小结

3、final


①、示例代码

②、常量

示例代码:


③、练习

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

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

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

④、小结

五、权限修饰符和代码块

1、权限修饰符的分类


2、权限修饰符的使用规则

3、代码块

①、局部代码块(写在方法中的{})
变量只在所属的代码块中有效,最本质的作用就是:节约内存,但是现在基本上就用不上了。

②、构造代码块(写在成员位置的代码块)
优于构造方法前执行


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

③、静态代码块(重点)



④、小结

六、抽象类和抽象方法
1、什么是抽象类?

2、抽象类和抽象方法的定义格式

①、代码演示

3、抽象类和抽象方法的注意事项

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

结构图:

示例代码:(JavaBean省略)


4、抽象类和抽象方法的意义

还是代码复用的问题:


5、小结

七、接口
1、为什么有接口?
可以把接口理解成一种规则:

2、接口的应用
接口是对行为的抽象


3、接口的定义和使用

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

示例代码:(省略JavaBean)


4、接口中成员的特点

示例代码:

测试类:

jps(内存分析工具):

5、接口和类之间的关系


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

结构图:

第一个思路:

第二个思路:(最优)

示例代码:(省略JavaBean)



6、接口中新增的方法

①、为什么这么设计?
JDK7以前,只要接口中新增了一个方法,后续的实现类也要新增该方法的重写,很麻烦

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

②、默认方法

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

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

③、静态方法

代码实现:



④、私有方法(JDK9)




7、适配器设计模式

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

InterAdapter:对接口进行空实现

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

小结:

八、内部类

1、初始内部类


①、为什么要学习内部类?

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

示例代码:

②、小结

2、成员内部类

①、获取成员内部类对象

示例代码:

②、成员内部类如何获取外部类的成员变量
练习一:成员内部类 - 面试题(重名问题)

示例代码:

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


③、小结

3、静态内部类

示例代码:

静态内部类方法的调用:

小结

4、局部内部类(没什么用)



5、匿名内部类

①、匿名内部类的基础语法
接口:实现关系

抽象类:继承关系

javap反编译:

②、匿名内部类的使用场景



③、扩展

对象赋值:

调用方法:

④、小结




















