这里我们学习第八章的内容:继承、抽象类、接口、枚举(以及包)
1.继承
继承性是Java语言面向对象的三大特征之一,上个特征封装性我们已经介绍过,这里我们先介绍一下继承性。
(1)继承的概念、特点、好处
1.概念
![](https://i-blog.csdnimg.cn/blog_migrate/4f1b98db062370533c12bfd86d62bada.png)
2.特点
![](https://i-blog.csdnimg.cn/blog_migrate/2ad6a0042840d620ac74c233cd85df95.png)
3.好处
继承的好处很简单:提高代码的复用性,简单来说就是让代码能多次使用。
(2)访问子、父类的成员(成员变量、成员方法)
![](https://i-blog.csdnimg.cn/blog_migrate/3204281883d94969605d783ba193e7db.png)
(3)子类继承、调用父类构造器
![](https://i-blog.csdnimg.cn/blog_migrate/7c7488a8d5209434a44c888295137a3a.png)
(4)覆盖(也就是重写)
1.覆盖的概念
覆盖是指在子类中,定义名称、参数个数与类型与父类完全相同的方法,用以重写父类里同名方法的概念。
2.注意事项
![](https://i-blog.csdnimg.cn/blog_migrate/7500c397dd6bd312066bc3048cb5b8e5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/66fe5cfa6237831d9035a499732a69bf.png)
(5)final
如果用final来修饰成员变量,则说明该成员为最终变量,即常量,程序中的其他部分可以访问,但不能修改。
![](https://i-blog.csdnimg.cn/blog_migrate/90e9a9bd915d718700f9c807d4c85605.png)
(6)Object类
Object是java.long类库中的一个类,所有的类都是直接或间接地继承该类而得到的。也就是说,如果某个类没有使用extends关键字指定其父类,则该类默认为java.long.Object的子类。
1.equals()方法
用于比较字符串是否相等
2.toString()方法
功能是将调用方法的对象的内容转换为字符串,并返回其内容,但返回的是一些无意义且看不懂的字符。用于重写(覆盖)。
3.getClass()方法
用于返回运行时对象所属的类
4.对象运算符instanceof
![](https://i-blog.csdnimg.cn/blog_migrate/a312e01179d5ce2da4062270a8bf63af.jpeg)
2.抽象类
(1)抽象类、抽象方法
![](https://i-blog.csdnimg.cn/blog_migrate/589fc45e6aa9b6d74755e224df9f0702.png)
(2)使用场景
![](https://i-blog.csdnimg.cn/blog_migrate/beb787102ab6d7152f8562facfa50bee.png)
(3)注意事项
![](https://i-blog.csdnimg.cn/blog_migrate/d061b4428059164711b4275438fe2a31.jpeg)
(4)(抽象类的)模板方法样式
1.介绍及使用
![](https://i-blog.csdnimg.cn/blog_migrate/a4ed51ac1f7dc78fb2fe8519d43b1c03.png)
2.功能
![](https://i-blog.csdnimg.cn/blog_migrate/63c447cf03f6ca604e057fa87034a475.png)
3.接口
接口(interface)是Java语言提供的一种重要功能,它的结构与抽象类相似。接口具有数据成员、抽象方法、默认方法和静态方法。我们先介绍一下接口与抽象类的区别。
(1)接口与抽象类的区别
![](https://i-blog.csdnimg.cn/blog_migrate/8eb5bdb4852727696cfbc429445aa53f.jpeg)
(2)接口的定义与特点
![](https://i-blog.csdnimg.cn/blog_migrate/3872fc53bd6f5431028a216216d2df14.png)
(3)接口的用法与注意事项
![](https://i-blog.csdnimg.cn/blog_migrate/d1a9d4769e9029d6f4008afaefd82b3f.png)
(4)接口的继承和多继承
![](https://i-blog.csdnimg.cn/blog_migrate/05aa073fae659121a107fd49cc8f0530.png)
(5)接口中新增方法
![](https://i-blog.csdnimg.cn/blog_migrate/c8e4555263942d76663322e82525ac84.png)
(6)注意事项
![](https://i-blog.csdnimg.cn/blog_migrate/447abdefa02b22411632abbe190d6ec3.png)
4.枚举
(1)枚举的概念及定义格式
![](https://i-blog.csdnimg.cn/blog_migrate/9d58709cac537b68e6c1aae68c145eab.png)
(2)枚举的特征
![](https://i-blog.csdnimg.cn/blog_migrate/64018b1e47d0d692688aa052c0ae3f55.png)
(3)使用场景
![](https://i-blog.csdnimg.cn/blog_migrate/4ae0f06efb14364f89c0c459096764c7.png)
5.包
包是java语言提供的一种区别类名空间的机制,是类的组织方式。每个包对应一个文件夹,包中还可以再有包,称为包等级。这里主要说明几个注意事项:
(1)注意事项
(1 同一个包中的类名不能重复。
(2 若要创建自己的包,就必须以package语句作为Java源文件的第一条非注释语句,指明该文件中定义的类所在的包。格式为:
package 包名1[.包名2[.包名3]省略号]
(3包名与对应文件夹名的大小写应一致。
(4 一个子类可以与其父类位于不同的包中。
(5 java语言中的package是用来存放类与接口的地方,因此package又称"类库"。Java类库是以包的形式实现的。
(2)java语言的常用包
![](https://i-blog.csdnimg.cn/blog_migrate/f7079c2edf7d67ba38136c70517bc1df.jpeg)
(3)java语言中常用的几个类
1.Date类
![](https://i-blog.csdnimg.cn/blog_migrate/47614ea8125a0df806cec2ea5971fdbf.png)
2.SimpleDateFormat类
![](https://i-blog.csdnimg.cn/blog_migrate/6b67d45a35125ef004268e95323c18e8.png)
3.Calendar类
![](https://i-blog.csdnimg.cn/blog_migrate/e3e1fd05d942f2d0839679a039cc4b32.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d310d9a9632fd90e3f6af92860e3df6c.png)