目录
四、包和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反编译:
②、匿名内部类的使用场景
③、扩展
对象赋值:
调用方法: