1、extends:关键字表示继承
关键字前后为类名称,继承关系为:关键字前面的类继承关键字后面的类
子类:继承别的类的类称为子类(extends关键字前面的类为子类)
父类:被继承的类称为父类(extends关键字后面的类),也称为:基类、超类
注意:*****所有的类默认继承Object类
注意:*****在Java中,类只能单继承
注意:可以实现多层继承,即:子类 --> 父类 --> 父类的父类,理论上可以无限继承下去,但推荐三层。
2、创建子类对象后,调用方法时,如果此方法在子类中存在,则执行子类的方法,如果子类不存在,父类中存在,则执行父类中的方法。
1、子类可以继承父类的可继承方法
2、子类可以继承父类可继承的属性
3、子类可以有自己的内容(相对于父类,更多的内容)
4、创建子类对象时,会先创建做一个父类对象
有继承关系:父类静态 —> 子类静态 —> 父类代码块 —> 父类构造 —> 子类代码块 —> 子类构造
5、子类可以有与父类相同名称的方法和属性
注意:属性同名—>随意
注意:子类与父类有相同(修饰符(子类范围不能高于父类)、返回值(相同,或者是其子类)、方法名称、参数列表都相同)的方法,称为子类重写(复写、覆写)父类方法Override
3、@单词:此种形式称为注解
@Override:表示当前方法为复写父类方法
注意:此注解可以省略,只要符合复写规则,则jdk默认此方法为复写方法
4、访问范围修饰符
public private default protected
验证方式:
单类:同包路径下 不同包路径下
继承:同包路径下是否能继承 不同包路径下是否能继承
public:公共的 共有的 表示只要在当前项目(工程)中都可以访问
子类可以继承
private:私有的 表示只能在当前类中访问
子类不可以继承
default:默认的 表示同包路径下对象可以访问,不同包路径下对象不可访问。同包路径下可以被继承,不同包路径下不能被继承。
注意:不能写出来
protected:受保护的 表示同包路径下对象可以访问,不同包路径下对象不可访问。同包路径下可以被继承,不同包路径下也可以被继承。
public > protected > default > private
5、子类对象和父类对象之间的转换
1、子类可以实例化父类对象 —> 向上转型(自动完成)
注意:如果子类没有复写父类方法,则使用父类对象调用该方法时,执行的是父类的方法;如果子类复写了父类方法,则父类对象调用该方法时,执行的是子类方法。
2、父类不可以自动实例化子类对象,可以使用强制转换来实现(前提:此父类对象由子类实例化)。(强制完成) ----> 向下转型
向下转型实现过程:有继承关系 —> 先向上转型 —> 然后再向下转型
6、抽象类
概念:被abstract关键字修饰的类为抽象类
abstract:关键字,表示抽象的,修饰类表示当前类为抽象类,修饰方法表示当前方法为抽象方法,不能修饰属性。
注意:abstract关键字修饰方法时,其所在类必须是抽象类,且当前方法没有方法体。
特点:
1、*****不能实例化对象(不能创建对象)
2、抽象类的对象由其子类来实例化
3、子类如果不想实现抽象父类方法,则也需要以抽象类存在。
如果子类为普通类,则必须复写抽象父类的抽象方法,普通方法可以复写。
4、抽象类中可以有普通方法,但普通类中不能有抽象方法
有抽象方法的类,一定是抽象类。