软件包:
![](https://i-blog.csdnimg.cn/blog_migrate/1273061c668110c6d0c74e7add4a8c81.png)
final关键字:
![](https://i-blog.csdnimg.cn/blog_migrate/f72c8e0843b087168b52c30f20c125a1.png)
常量:
![](https://i-blog.csdnimg.cn/blog_migrate/fdf8a2ba01127b927ac34abfc9ee9ef3.png)
权限修饰符:
![](https://i-blog.csdnimg.cn/blog_migrate/59672cdf9a99d19010a8905a2fe4b8f3.png)
静态代码块:
![](https://i-blog.csdnimg.cn/blog_migrate/60ff16452b24819dfd07a5f92e32c140.png)
与代码块不同的是,静态代码块执行一次便失去作用;
抽象方法:
![](https://i-blog.csdnimg.cn/blog_migrate/027c8205ec484208153d0b4bb3837a0d.png)
抽象类和抽象方法的定义格式:
![](https://i-blog.csdnimg.cn/blog_migrate/6cad11f9c0aeeea1f8b4dfdee37a2819.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9e9cde93f1088d057f6bf0745e2fa842.png)
注意事项:
![](https://i-blog.csdnimg.cn/blog_migrate/fefad990d88ec2937d8b0ab1021cdd62.png)
不能实例化的意思就是不能创建对象;
![](https://i-blog.csdnimg.cn/blog_migrate/eefaaa2d3bfbb6a7ddb4c4dc8b3543a8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/be0974f9322603283c43c8f33651212e.png)
抽象类中的构造方法是当创建子类对象时,给子类的属性进行赋值的;
一般抽象类的子类不会采用抽象类的方式,因为不能创建对象,需要再写一个子类来继承这个抽象类;
抽象类和抽象方法的意义:
强制子类必须按照这种格式进行重写;
接口:
![](https://i-blog.csdnimg.cn/blog_migrate/6447810f9fa1f17bb377933bd27fa26e.png)
接口的定义和使用:
![](https://i-blog.csdnimg.cn/blog_migrate/85d1afa1b3bec26e73e489d2658be960.png)
注意点:
![](https://i-blog.csdnimg.cn/blog_migrate/c2ecf4741c0ffcd0e85bb9cffbcf8b17.png)
接口中的成员特点:
![](https://i-blog.csdnimg.cn/blog_migrate/19620476ccb7f91e306716a29e1f9ec6.png)
接口和类之间的关系:
![](https://i-blog.csdnimg.cn/blog_migrate/14004a5554328c761e5c34e1806f9776.png)
JDK8中接口支持默认方法:
![](https://i-blog.csdnimg.cn/blog_migrate/bc645166d0d49b9effab50644a966d59.png)
重写后不同接口中同名的方法都被重写为同一个方法,但如果不重写,重名会报错;
JDK8中接口支持静态方法:
![](https://i-blog.csdnimg.cn/blog_migrate/5cebd7a801c44eb55d392b12d4fde831.png)
静态方法不能重写;
适配器设计模式:
![](https://i-blog.csdnimg.cn/blog_migrate/783adda47d8c2d42afe6e1292544019c.png)