版权声明:作者已开启版权声明,如转载请注明转载地址。 https://blog.csdn.net/qq_34829447/article/details/82026905
一.继承【is a】
1.继承的概念
- 继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系
- 在java中,类的继承是指在一个现有类的基础上去构建一个新的类
- Java中不允许多继承,但可以多层继承
- 继承关系的子类特点:子类会自动拥有父类所有非private修饰的属性和方法
2.继承的定义格式和使用
继承的格式
class 子类 extends 父类{...}
3.继承的好处
- 继承的出现提高了代码的复用性,提高软件开发效率
- 继承的出现让类与类之间产生了关系,提供了多态的前提
4.继承的注意事项
在Java中,类只支持单继承,不允许多继承
多个类可以继承一个父类
在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类
在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类
5.继承后子类父类成员变量的特点
子类的对象调用成员变量的时候,子类自己有,使用子类,子类自己没有调用的父类
当子父类中出现了同名成员变量时,在子类中若要访问父类中的成员变量,必须使用关键字super来完成
super.父类中的成员变量
6.继承后子类父类成员方法的特点
子类的对象调用方法的时候,子类自己有,使用子类,子类自己没有调用的父类
成员方法特殊情况——覆盖
子类中出现与父类一模一样的方法时,会出现覆盖操作,也称Override重写、复写或者覆盖
在子类中,访问父类中的成员方法格式:
super.父类中的成员方法();
子类重写父类方法的注意问题:必须保证子类方法权限大于等于父类方法权限
7.总结内容
当一个类是另一个类中的一种时,可以通过继承,来继承属性与功能。如果父类具备的功能内容需要子类特殊定义时,进行方法重写
二.抽象类Abstract
1.抽象类的产生
分析事物时,发现了共性内容,就出现向上抽取。会有这样一种特殊情况,就是方法功能声明相同,但方法功能主体不同。那么这时也可以抽取,但只抽取方法声明,不抽取方法主体。那么此方法就是一个抽象方法。
2.抽象类的定义格式
抽象方法定义的格式
public abstract 返回值类型 方法名(参数);
抽象类定义的格式
abstract class 类名{...}
实例代码
/* * 定义类开发工程师类 * EE开发工程师 : 工作 * Android开发工程师 : 工作 * * 根据共性进行抽取,然后形成一个父类Develop * 定义方法,工作: 怎么工作,具体干什么呀 * * 抽象类,不能实例化对象, 不能new的 * 不能创建对象的原因: 如果真的让你new了, 对象.调用抽象方法,抽象方法没有主体,根本就不能运行 * 抽象类使用: 定义类继承抽象类,将抽象方法进行重写,创建子类的对象 */ public abstract class Develop { //定义方法工作方法,但是怎么工作,说不清楚了,讲不明白 //就不说, 方法没有主体的方法,必须使用关键字abstract修饰 //抽象的方法,必须存在于抽象的类中,类也必须用abstract修饰 public abstract void work(); }
3.抽象类特点
- 抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。
- 抽象类不可以直接创建对象,原因:调用抽象方法没有意义。
- 只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。
4.抽象类的设计思想
继承的体系抽象类,强制子类重写抽象的方法
5.抽象类的细节
抽象类一定是一个父类?是的,因为不断抽取而来的。
抽象类中是否可以不定义抽象方法?可以的,那这个抽象类的存在意义是什么呢?不让该类创建对象,方法可以直接让子类去使用
抽象类关键字abstract不能和哪些关键字共存?
- private:私有的方法子类无法继承到,也不存在覆盖
- final
- static
如果子类继承了抽象类,重写了一部分的抽象方法,这个子类还是一个抽象类