继承基础
- java中通过extends关键字来声明类的继承关系
- 类不能多继承,接口可以多继承。
- 子类能够直接访问父类非private成员和类变量和方法
- 子类能够重写(覆盖)父类成员变量和成员方法。
this和super的使用
this的使用
- 能够访问类成员变量和成员方法
- 能够在构造函数内调用其他的重载构造函数(调用语句必须是构造函数非注释代码中第一行)
- 作为参数传递(指向当前对象)
super的使用
- 在子类重写父类成员的情况下,通过super关键字能够访问父类中定义的成员(必须为非private)
- 在子类构造函数中调用父类非默认构造函数(有默认构造函数时不用调用),调用语句必须是构造函数中非注释代码中的第一行
super和this的区别:this主要用在当前类中,用于访问成员和构造函数。super主要用于子类中,用于访问父类成员和构造函数
this能够参数传递给方法...,但是super不能。
重载(overload)和重写(overide)的区别
- 重载:在类内部定义多个同名方法,这些方法除了参数签名(参数类型,参数数量,参数量)意外其他地方都一样则称之为重载
- 重写 :在子类中定义跟父类中一样的方法则称之为重写
子类对象创建过程
- 根据单个类对象创建过程一样执行父类的初始化
- 父类初始化完后执行子类的初始化过程
动态绑定和静态绑定
类组成部分中动态绑定的部分:非private成员方法。
静态绑定部分:静态方法和静态变量,实例变量和private实例方法。
- 动态绑定:在运行时根据实际类型确定访问关系
- 在编译阶段就能确定访问关系
继承中的可见性
子类能够访问父类所有非private数据和操作。子类能够扩展父类提供的数据量和对数据的操作能力,但不能降低父类能力。这包括父类成员可见性,如:父类中public的方法在子类中的可见性只能是public不能是其他的可见性级别。
向上,向下转型
- 向上转型都能成功,如:子类对象能够赋给父类引用。
- 向下转型要考虑父类引用实际指向对象的类型(运行时动态确定,可以利用instanceof关键字),如果父类引用实际指向的是当前类或当前类子类则可以进行向下转型否则失败。