一、继承
类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实世界更美好的建模。
提高代码的复用性。
关键字:extends 扩展;子类的父类的扩展
子类继承父类的成员变量和成员方法,但不继承父类的构造方法;
Java中只有单继承;
Java中的多继承,可以通过接口来实现;
—如果定义一个类,没有调用extends,则它的父类是:java.lang.Object
不能被继承的父类成员:
private成员(成员变量,成员方法);
子类与父类不在同包,使用默认访问权限的成员;
构造方法
本类 同包 子类 所有类
public √ √ √ √
Protected √ √ √ ×
默认 √ √ × ×
Private √ × × ×
二、方法的重写
—在子类中可以根据需要对从基类中继承来的方法进行重写。
—重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。
—重写方法不能使用比被重写方法更严格的访问权限。
为什么需要重写父类的方法?
-父类实现的方法不符合子类的逻辑;
-父类已经实现80%,但是子类又必须要使用剩下的20%,所以可以重写父类方法,在方法内用super关键字调用父类的方法,再去完成剩下的20%工作
三、super关键字
--super是直接父类对象的引用;
--可以通过super来访问父类中被子类覆盖的方法或属性;
--普通方法中:没有顺序限制,可以随便调用
--构造函数中:任何类的构造函数中,若是构造函数的第一行代码没有显式的调用super;那么Java默认都会调用super();作为父类的初始函数。
四、final关键字
--final可以用来修饰变量,方法,类
-用final来修饰一个变量,则该变量就变成了一个常量
-用final来修饰一个类,则该类就不能被作为父类继承
-用final来修饰一个方法,则该方法就不能被重写
五、Object类
Object类是所有Java类的根基类;
六、抽象类
--是一种模板模式。抽象类为所有子类提供了一个通用模板,子类可以在这个模板基础上进行扩展
为什么要使用抽象类?
—通过抽象类,可以避免子类设计的随意性。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用;
class前加abstract该类就成为了一个抽象类
1,抽象类不能创建对象;
2,抽象类一般是一个父类,该父类没有什么存在的意义,就是用来被子类继承
3,抽象类中可以有抽象方法,也可以有非抽象方法;
4,一个类继承了一个抽象类,则该类必须要实现该抽象类中的所有抽象方法;
5,如果子类也是抽象类,则可以不实现父类的抽象方法;
6,抽象方法必须定义在抽象类中
抽象方法:
如果一个方法 每个子类实现的逻辑都不一样,则把该方法定义成抽象方法;
让每个子类去根据自己的逻辑实现该方法。
如果一个方法,每个子类实现的逻辑都一样,则该方法直接在父类中实现,子类直接调用