面向对象的特征之继承
使用extends建立子类与父类的继承关系
子类继承父类相当于子类把父类的功能复制了一份,但注意,构造方法不能被继承
继承后,子类可以使用父类的所有非私有资源,私有资源不可用的原因是不可见
Java只支持单继承,一个子类只能有一个父类,但是一个父类可以有多个子类
继承具有传递性,爷爷的功能会传给爸爸,爸爸的功能会传给孙子
继承是强耦合关联性非常强的is a关系
关键字super
super可以在父类成员变量与子类成员变量同名时,用过super.变量名的方式调用父类的成员变量
还可以通过super调用父类的构造方法,子类的构造方法首行默认存在super();表示调用父类的无参构造,如果没有父类的无参构造,需要手动提供父类的其他含参构造供子类调用
tips:子类其实并不关系调用的是父类的哪个构造方法,只是需要先调用一个父类的构造方法而已,所以每次创建子类对象时,都会先调用父类的构造方法,再调用子类的构造方法
注意:构造方法的调用只能在构造方法的首行
方法的重写
前提:子类继承父类以后,对父类的功能做改进
语法规则:两同 两小 一大
两同:子类的方法与父类方法的方法名+参数列表相同
一大:子类方法的修饰符 >= 父类方法的修饰符
两小:子类方法的返回值类型 <=父类方法的返回值类型
子类方法抛出的异常类型 <= 父类方法抛出的异常类型
注意:我们在重写规则中提到的方法的返回值类型的大小,指的不是值的大小【1与2】,也不是字节的大小【byte与int】,我们这里指的“大小”是说:子类方法的返回值类型必须是父类方法返回值类型的子类或者是同一类型
比如父类是:void,子类是void
比如父类是:Cat,子类是MiaoMiao
关键字static
静态可以修饰变量,方法,代码块
被static修饰的资源称作静态资源
静态资源属于类资源,随着类的加载而加载,只加载一次
静态资源可以被类名直接调用,原因是因为静态资源优先于对象加载,没有对象也可以使用
静态资源被全局对象共享,只有一份
静态只能调用静态
静态代码块static{}
位置:类里方法外
执行时机:类加载时就加载,而且只会加载一次
作用:初始化,用于加载那些需要第一时间就加载,而且只加载一次的资源
代码块的执行顺序:
静态代码块 构造代码块 构造方法 局部代码块
关键字final
final表示最终,可以修饰
被final修饰的类是最终类,不可以被继承
被final修饰的方法是方法的最终实现,不可以被重写
被final修饰的“变量”其实是常量,值不可以被修改,而且常量定义时必须同时赋值