- 继承
- 格式
/* Your code... */
class SubClass extends SuperClass{
//父类里放共性
//子类放特性,是对父类的拓展
} - 作用
- 描述一个体系
- 解决代码重复
- 注:
- java只允许单继承
- java.lang.Object类时java语言提供,任何类都是Objec的(间接)子类
- 子类可以访问的父类成员
- 可以访问的
- public或protected修饰的
- 同包中缺省访问修饰的
- 不可以直接访问的
- 不同包里缺省访问修饰符的
- private修饰的
- 可以访问的
- 子类初始化//从类所在继承树最顶层的类的构造器开始执行
- 调用子类构造器前调用父类可以被子类访问的构造器
- 完成父类字段初始化操作,(隐式调用父类无参构造函数)
- 若父类没有子类可以访问的无参构造器,子类必须显示通过super语句调用父类带参数构造器
- super关键字
- 定义:代表当前对象的父类对象
- 作用
- 子类构造方法中的第一条语句:
/* Your code... */
super(name,age) //在子类的构造方法中调用父类的指定构造器 - 在子类中访问父类的被隐藏的实例变量
- 调用父类的被覆盖的实例方法,如:super.name,super.fly();
- 子类构造方法中的第一条语句:
- 方法覆盖Override:方法重写
- 原则:
- 一同:签名必相同
- 两小:
- 子类方法放回值类型和父类同型或是其子类
- 子类方法声明抛出异常的类和父类方法声明抛出异常的类也是,(运行时异常除外)
- 一大:子类方法访问权限比父类方法权限>=
- @Override标签
- 原则:
- 格式
- 组合
- 在B中new 一个A的对象,调A的方法
- 多态
- Java引用变量的两类型
- 编译时类型:声明该变量时使用的类型决定
- 运行时类型:由实际赋给该变量的对象决定
- 编译时类型和运行时类型的不一致,可能出现多态
- 出现前提
- 继承(类和类)//子类对象赋值给父类变量
- 实现(接口和实现类)//实现类对象赋值给接口变量
- 运行时会表现出 子类or实现类 特征(调用子类or实现类 的覆盖方法)
- 作用:屏蔽不同子类或者实现类间差异,通用编程
- instanceof
- 如果对象是一个类/子类/实现类的实例,返回true
- 操作的两个操作数应当具有继承或者相同的关系,否则编译报错
- Java引用变量的两类型
285 次浏览