面向对象编程(二)——继承
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。(子类会具有父类的一般特性也会具有自身的特性。)
static关键字(静态修饰符)
- 可以修饰成员变量和成员方法
- 可以通过对象和类来调用(调用的都是同一个)
- 修饰成员变量表示静态变量,静态变量是所有对象公用的,在内存中只占有一份内存
- 修饰成员方法表示静态方法,静态方法里面只能访问静态变量
static应用举例
- 圆类(π可以设置为static)
- 一个游戏中的游戏管理类(负责整个游戏的状态,只需要一个对象,可以全部设置为static)
- 一个班级类(每个班级有一个所属的学校)
static特点
- 随着类的加载而加载
- 优先于对象存在
- 所有对象共享(可以通过对象或者类来访问)
静态代码块
放在类里面,只会执行一次(加载类的时候,就执行这个类里面的静态代码块)
static{
}
帮助文档生成
使用文档注释生成帮助文档,以便非代码编译者了解此代码用处(多用于只提供使用,不公开源码的情况下)。
- -d api : 放在java文件所在的文件下的api的文件夹下
- ArrayTool.java: 此文件内的所有类必须为public类
类的继承格式
在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下:
class 父类 {
}
修饰符 class 子类 extends 父类 {
}
注意: Java 不支持多继承,但支持多重继承。
- Java 的继承是单继承,但是可以多重继承。
- 单继承就是一个子类只能继承一个父类。
- 多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
- 子类继承了父类里面的成员(成员变量和成员方法)
- 子类不能访问父类里面的私有成员
- 子类对象里面拥有父类里面的私有成员变量(只是不能直接访问)
怎么继承
- 提取公共类
- 子类继承公共类(子类拥有公共类所拥有的东西)
- extends XXX
implements关键字
使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。
super 与 this 关键字
子类和父类里面有同名的变量,就近原则(优先级:方法参数>当前类的变量>父类的变量)
super关键字: 我们可以通过super关键字来实现对父类成员(变量、方法和构造方法)的访问,用来引用当前对象的父类。(必须是构造器的第一条语句)
this关键字: 指向自己的引用。
继承中的构造
- 当没有显式调用(通过super(xx,xx,xx,xx)调用)父类里面的构造方法时,默认会调用父类里面的无参构造方法;
- 如果父类没有无参构造方法,要通过下面的调用指定的有参构造方法
- 怎么指定调用父类里面的构造方法
super(xx,xx,xx,xx); - 怎么指定调用子类本身中的构造方法
this(xx,xx,xx);
- 怎么指定调用父类里面的构造方法
-
注意:
- 通过this或者super调用构造方法的时候必须在第一条语句,因此二者不能同时出现,只能选择其一调用 构造方法