继承
extends
子类是一种特殊的父类
山地自行车是一种自行车
class Bike {}
class MountainBike extends Bike{
//代码
}
继承后,对象的属性是什么关系?
对象属性继承
子类的构造方法中必须调用父类的构造方法
(如果父类的构造方法无参,可以不写,编译器自动补上super())
通过super()调用父类的构造方法
super()必须出现在子类构造方法的第一行
方法
- 父类中出现的方法,可以直接在子类中调用
- 父类中出现的方法,可以定义同名,但参数不同的方法(重载)
- 方法的覆写:方法名必须一样,方法参数类型必须一样,返回值类型必须一样,访问限定符不能比父类的小
- 注解: 可以添加自定义注解,也可以使用jdk定义好的注解,比如:@Override (帮程序员在编译期间检查覆写) 和 @SuppressWarning(显式的压制部分警告)
- 访问限定符:public / protected / default / private,遵循从大到小,protected只能在包内调用
- java中特殊的类:Object,如果没有明确写出继承,则自定继承自Object,它是所有类的基类
- 在普通方法中
a 可能是:局部变量、本类的属性、父类的属性
this.a 可能是 : 本类的属性、父类的属性
super.a 可能是 : 父类的属性
多态
- Person p = new Person();
有一个Person类的引用的p,指向Person类型的对象
引用类型和对象类型不要求一定一样 - 向上转型:
Animal的子类有 Dog/Cat
Animal p1 = new Dog();
Animal p2 = new Cat();
是Animal类型的引用,指向Dog类型的对象
- 普通方法的执行,跟随对象类型而不是引用类型
- 静态方法的执行,跟随引用类型而不是对象类型
- 向下转型
Human h = (Human)p;
向下转型前要用 instanceof 来判断是否能够转型
这个语句是判断是引用是否能全部指向