Java 继承
一、引言
在 Java 面向对象编程技术中,继承是至关重要的概念,它如同一块基石,允许开发者创建分等级层次的类,大大提高了代码的复用性、可维护性以及开发效率。接下来,我们将深入探讨 Java 继承的各个方面。
二、继承的概念和特点
(一)概念
继承是面向对象软件技术里的一个核心概念。若类别 B “继承自” 类别 A,那么 B 就是 “A 的子类”,A 则被称为 “B 的父类别” 或 “B 的超类”。借助继承,子类能够拥有父类的各种属性和方法,无需重新编写相同代码。
Java 提供了类的继承机制,通过该机制,新建的子类可以使用或重写父类的成员方法,访问父类的成员变量。若 A 是 B 的父类,B 是 C 的父类,那么 C 也是 A 的子类。
(二)特点
- 单一继承:Java 中的继承为单一继承,即一个子类只能有一个父类,但一个父类可以有多个子类。
- 继承自 Object 类:所有的 Java 类都继承自
java.lang.Object
类,所以Object
是所有类的祖先类。除Object
类外,所有类都必须有一个父类。若在定义类时未显式指定其父类,它默认继承自Object
类。 - 全盘继承:子类一旦继承父类,就会继承父类所有开放的特征,无法选择性地继承。
- “is a” 关系:继承体现的是类与类之间 “is a” 的关系,即满足 A is a B 的关系就可以形成继承关系。
三、实现继承
在 Java 语言中,通过 extends
关键字声明一个类继承自另一个类。示例代码如下:
// 父类
class SuperClass {
// 父类的成员变量和方法
}
// 子类
class SubClass extends SuperClass {
// 子类的成员变量和方法
}
以宠物为例,宠物猫和宠物狗都是宠物,都有昵称、年龄等属性,都有吃东西、叫喊等行为。我们可以定义一个父类:宠物类,宠物猫和宠物狗类都继承宠物类。代码实现如下:
// 父类:宠物类
public class Pet {
private String name; // 昵称
private int age; // 年龄
// getter 和 setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
// 吃东西
public void eat() {
System.out.println(this.getName() + "在吃东西");
}
// 叫喊
public void shout() {
System.out.println("宠物会叫");
}
}
// 宠物狗类
public class Dog extends Pet {
// 特有属性体重
private float weight;
// getter 和 setter
public float getWeight() {
return weight;
}