一、继承(Inheritance)
1.概述
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
2.extends:扩展,延伸
Java中,要是想继承某个父类,可以用如下格式:
class 子类 extends 父类 {}
其中 父类 -> 子类 是特化(特殊化)
而 子类 -> 父类 是泛化(一般化)对于类和类之间的继承来说,extends 关键字之后只能跟一个 直接父类。
如果定义类的时候时,未通过 extends 显式 指定其直接父类,则默认父类为 java.lang.Object 。
3.继承的两种说法
-
子类和父类在同包的时,可以父类中继承公开的,受保护的,默认的成员(关注字段和方法)
子类和父类在不同包时,可从父类中继承公开的,受保护的的成员。(关注字段和方法)
-
(内存划分,推荐说法)
子类可以继承从父类中的所有成员,但受访问修饰符的影响。(字段和方法)
二、this 关键字
通过 ***this([参数列表])***形式调用本类中 其他构造方法。
通过 this.实例变量名称形式调用 变量的值。
this.show();
this.type = "元";
- 访问实例变量
- 调用实例方法
- 在构造方法中调用本类的其他方法。
this 可以理解为一个只想当前实例(对象)的引用。(可以将 this 理解为一个变量,其中存储了当前实例(对象)在堆内存储中的首地址)。
this 一般使用于:
- 实例初始化器
- 构造方法
- 实例方法
(注:但不可在 **类方法(类初始化器)**中使用)
Error:‘com.kaifamiao.inherit.Shape.this’ cannot be referenced from a static context。
错误: ‘com.kaifamiao.inherit.Shape.this’ 不能从静态上下文中引用
三、super()
- 通过 super([参数列表]) 形式调用父类构造方法。
- 调用从父类继承的实例方法。
- 在本类的构造方法中调用父类的构造方法。
super()在以下三个场景使用:
- 实例初始化器
- 构造方法
- 实例方法
通过 **“super([参数列表])”**形式调用父类方法。
通过 “super.实例变量名” 为从父类继承的实例变量赋值
通过 **“super.实例变量名([参数列表])”**形式调用从父类继承的实例方法。
super() 和 this 的区别
super 和 this 不同,super 不可以 理解为一个 引用变量 ,不可以单独使用。他用来访问从父类继承的成员,调用父类的构造方法。
含有 “public static void main (String[])
” 的方法类被称作 启动类。
直接运行启动类的 main方法
会导致该类被初始化。而且当子类被初始化后,其父类也会被初始化。
被 **final
** 修饰是的变量是 最终变量 ,只能初始化一次,之后不可以被赋值。
被 final 修饰的类为最终类,没有子类。