继承中变量的使用
父类成员变量和子类成员变量重名时,使用 super.变量名 指定父类的成员变量
继承中构造方法的使用
- 创建子类对象时 会先调用父类的无参构造 因为子类的构造函数中默认存在一个super();
- 如果父类没有无参构造的话,我们需要手动指定子类去调用父类的含参构造super(参数);
- 构造方法不可以被继承,原因是构造方法必须是本类类名,不可能在子类中存在一个父类类名的构造方法
方法的重写
-
重写:子类对父类的方法不满意时,可以重写父类的方法
注意:重写是在不改变父类方法的前提下,实现功能的修改,重写后,子类对象调用的就是重写后的功能
-
方法重写的原则: 两同 . 两小 . 一大
-
两同: 方法名 参数列表 相同
-
两小: 子类方法的返回值类型与父类方法返回值类型相同,或者是父类方法返回值类型的子类型
注意: 如果父类方法的返回值类型为void 子类应该保持一致void
-
一大: 子类方法的 修饰符权限>= 父类方法的修饰符权限
-
final 关键字:最终的
-
final 可以用来修饰类 被final修饰的类是最终类 不可以被继承
比如: final class Father{}
-
final 可以用来修饰方法 被final修饰的方法是这个方法的最终实现 不可以被重写
比如: public final void work(){}
- 被final修饰的是常量 常量的值是不可以修改的
- 注意:不管是成员位置还是局部位置,常量定义的时候必须赋值
- 注意:常量的名称必须是全大写 单词与单词之间使用_分割
static 静态
-
被 static 修饰的资源是静态资源
- 静态资源随着类的加载而加载到内存中,比对象优先进入内存
- 静态资源不可以通过对象调用,直接通过类名调用
-
static 可以 用来修饰成员变量
-
static 可以用来修饰方法
-
静态资源在内存中只有一份 而且会被全局所有对象共享,
不管我们使用哪种方式修改了静态变量的值 使用任何方式来查看 都是静态变量那个刚刚被修改了的值
-
普通资源可以调用普通资源 也可以调用静态资源
静态资源只能调用静态资源
-
静态区域中 不可以使用this super 关键字 因为静态区域优先于对象加载 this super是调用对象的
-
静态代码块:
-
格式:static{ }
-
位置:类里方法外
-
执行时机:随着类的加载而加载,优先于对象进行加载【只加载一次】
-
作用:用于加载那些需要第一时间就加载,并且只加载一次的资源,常用来初始化
-
顺序:静态代码块 构造代码块 构造方法 普通方法【如果普通方法里有局部代码块,执行局部代码块】
如果有多个静态资源,加载顺序取决于先后位置
-
多态
-
前提:
- 继承
- 重写
-
创建多态对象–口诀
-
父类引用指向子类对象
解释: 创建出来的 子类类型对象的地址值 交给 父类类型的引用类型变量来保存
-
编译看左边 运行看右边
解释: 必须要在父类中定义这个方法才能通过编译 把多态对象看成是父类类型
必须要在子类中重写这个方法 才能满足多态 实际执行的是子类方法
-
父类对象不可以使用子类的特有功能
-
多态对象也不可以使用子类的特有功能
-
-
资源使用情况:
-
成员变量使用的是父类的成员变量
-
成员方法使用的是父类的方法定义,子类的方法体
-
如果多态对象调用的是子类没有重写过的方法,方法定义与方法体使用的都是父类的,所以这个不符合多态的前提,直接使用纯纯的父类对象调用即可
-