方法的重写 override
在继承关系中,父类中的方法不能满足子类需求时需子类自己重新实现
方法名,参数,返回值,权限
重写必须与父类相同方法名称,参数列表,返回类型
重写方法权限修饰符不能比父类权限低
== 方法名,形参相同
<= 返回值类型和异常类型,子类小于等于父类
= >访问权限,子类大于等于父类
private,static,final修饰的方法不能重写
private成员:子类继承父类中的全部但没有权限访问private成员
属性查找循序(变量h)
先当前类,如没有则到上个父类,父类没有则找父类的父类直到Object,如果没找到则编译出错,只要找到一个h则过程结束
构造方法调用顺序
先父类再子类
Object类
所有java类的根基类(祖宗类)
如果类声明中无extends关键字则默认继承Object类
toString方法
Objec t类中定义有 public String toString() 方法,其返回值是 String 类型,用来描述当前对象的有关信息
在进行String和其它类型数据连接时,自动调用该对象类的toString() 方法
equals方法
对比内存中的地址,如需比较内容则需要重写
多态
在继承关系中,要有方法的重写,父类引用指向子类对象多态是方法的多态,属性无多态
灵活,便于维护
(方法的重写就是多态的一种表现方式)
对象的转型
和基本数据类型转换相似
父类的引用类型变量可以指向子类的对象,向下转型(自动类型转换)
父类的引用不可以访问子类增加的成员
引用 变量 instanceof 类名 判断该引用变量所指向的对象是否属于该类或该类的子类
子类的对象可以当作父类的对象来使用为向上转型(强制类型转换)
抽象类
不需要方法体的方法,需用abstract关键字修饰,必须在抽象类中
特点:
有抽象方法的类只能定义抽象类
不能实例化(不能new来实例化抽象类)
抽象类中构造方法不能new实例,只能子类调用
只能用来继承
抽象方法必须在子类中重写才可用