Java继承的定义和使用(附带实例)
继承(extends)是指子类拥有父类的非私有属性和方法,使子类对象(实例)具有父类的特性和方法。父类被称为基类或超类,子类也被称为派生类。
继承是实现代码重用的有力手段,能够有效缩短开发周期、降低开发成本,实现代码的复用和层次化设计。
继承的作用有以下 2 点:
在 Java 中,继承通过使用关键字 extends 来实现。语法结构如下:
【实例 1】创建 Animal 类和 Cat 类,Animal 类作为父类,Cat 类作为子类,Animal 类的成员属性是 name,成员方法是 eat() 方法,Cat 类的成员属性是 name,成员方法是 eat() 方法和 sleep() 方法,使用继承实现,代码如下:
在继承中,成员的访问要遵循以下 2 点规则:
【实例 2】例 1 实现了继承,现在针对同一个案例实现对构造方法的顺序调用,代码如下:
继承是实现代码重用的有力手段,能够有效缩短开发周期、降低开发成本,实现代码的复用和层次化设计。
继承的作用有以下 2 点:
- 代码复用:子类可以直接使用父类中已经实现的方法和属性,避免重复编写代码。
- 层次结构构建:可以构建具有层次关系的类体系,更好地组织和管理代码。
在 Java 中,继承通过使用关键字 extends 来实现。语法结构如下:
访问修饰符 class 子类名称 extends 父类名称 {
子类成员
}
【实例 1】创建 Animal 类和 Cat 类,Animal 类作为父类,Cat 类作为子类,Animal 类的成员属性是 name,成员方法是 eat() 方法,Cat 类的成员属性是 name,成员方法是 eat() 方法和 sleep() 方法,使用继承实现,代码如下:
public class Animal {
// 定义私有的属性:name
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 定义成员方法:eat 方法
public void eat() {
System.out.println("Animal 动物吃东西");
}
}
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("Cat 猫吃猫粮");
}
// 子类中特有的方法
public void sleep() {
System.out.println("猫在睡觉");
}
}
在上述代码中,Cat 类继承了 Animal 类的 name 属性和 eat() 方法,同时又有自己特有的 sleep() 方法。通过继承,可以避免在 Cat 类中重复编写 eat() 方法的代码,实现了对代码的复用。在继承中,成员的访问要遵循以下 2 点规则:
- 子类可以访问父类的非私有成员;
- 子类不可以直接访问父类的私有成员,但可以通过父类提供的公共或受保护的方法间接访问。
Java构造方法的调用顺序
- 当创建子类对象时,首先会调用父类的构造方法,然后再调用子类的构造方法;
- 如果子类的构造方法中没有显式调用父类的构造方法,编译器就会自动插入一条对父类无参数构造方法的调用。
【实例 2】例 1 实现了继承,现在针对同一个案例实现对构造方法的顺序调用,代码如下:
public class Animal {
// 定义私有的属性:name
private String name;
// 无参构造方法
public Animal() {
}
// 带参构造方法
public Animal(String name) {
this.name = name;
}
// 获取 name 属性的值
public String getName() {
return name;
}
// 设置 name 属性的值
public void setName(String name) {
this.name = name;
}
// 定义成员方法:eat 方法
public void eat() {
System.out.println("Animal 动物吃东西");
}
}
public class Cat extends Animal {
// 无参构造方法
public Cat() {
}
// 带参构造方法
public Cat(String name) {
super(name); // 调用父类的带参构造方法
}
// 重写父类的 eat 方法
@Override
public void eat() {
System.out.println("Cat 猫吃猫粮");
}
// 子类中特有的方法
public void sleep() {
System.out.println("猫在睡觉");
}
}
public class TestCat {
public static void main(String[] args) {
Cat cat = new Cat(); // 创建 Cat 对象
cat.eat(); // 调用 eat 方法
}
}
在上述代码中,我们在 TestCat 类中可以看出在创建 Cat 子类的对象时,先调用的是 Animal 父类的构造方法,然后再次调用 Cat 子类的构造方法。
ICP备案:
公安联网备案: