继承与多态
子类
is a 关系
整体与部分 has a
extends 继承关键词
父类也叫做 超类 基类
object 类
-
类层次最高点,是所有类的直接或间接父类
-
方法
- public final Class getClass(): 获取当前对象所属的类信息,返回Class对象
- public Strig toString (): 安字符串对象返回当前对象本身的有关信息
- public boolean equals(Object obj): 比较两个对象是否是同一个对象,是则返回true
-
单重继承
-
java是完全的面向对象语言 ,具有完全的oop能力。
-
可继承父类的方法和成员变量,但是不能继承构造方法
-
得到构造方法的方式
- 自己编写构造方法
- 系统为类默认提供唯一一个默认的构造方法
-
多重继承是通过接口来实现的
对象转型
-
对象转型:将子类对象付给父类变量
- 类的变量既可以指向本类实例,又可以指向子类实例
-
规则
- 沿类层次向上转型总是合法的, eg 子类–> 父类
- 对于向下转型,只能是祖先类转型到后代类,其他类之间不允许, eg: 父类—> 子类
方法覆盖与多态
方法覆盖–override
-
子类中定义方法所用的名字,返回类型及参数列表和父类中方法使用的完全一样,也就是具有相同的方法签名
-
覆盖规则
-
重写
- 覆盖的同名方法中,
子类方法不能比父类方法的访问权限更严格
子类抛出的异常不能比原方法更多 - 子类与父类用相同的方法名及参数列表
- 父类,子类
- 覆盖的同名方法中,
-
重载
- 方法名相同,参数列表不同
- 重载的方法属于同一个类
-
调用父类构造方法
- super关键词,用在子类构造方法中第一行。
多态
- 重写,重载都是多态的表现
终极类和抽象类
final
-
终极类
- 不能被继承
-
终极方法
- 不能被重写
-
终极变量
- 不能被重新赋值
abstract
-
抽象类
- 抽象类中必须有抽象方法,可以有普通方法
- 抽象类的子类所继承的抽象方法,同样还是抽象方法,除非子类实现父类的所有方法
- 抽象类不能创建对象,除非通过间接的方法来创建起子类对象。
接口
定义
- 用interface关键词修饰类
实现
- 用implement 关键词实现接口,同时重写接口中所有的方法