超类 (Superclass) 的定义以及继承 (extends)和实现 (implements)
超类 (Superclass) 的定义
超类(Superclass)是面向对象编程中的一个核心概念:
- 超类:也称为父类(Parent Class)或基类(Base Class),是被其他类继承的类
- 子类:也称为派生类(Derived Class)或子类(Child Class),是继承自超类的类
相关概念
1. 继承 (Inheritance)
// 示例:超类
class Animal {
protected String name;
public void eat() {
System.out.println(name + " is eating");
}
}
// 子类继承超类
class Dog extends Animal {
public void bark() {
System.out.println(name + " is barking");
}
}
2. 方法重写 (Override)
- 子类可以重写超类中的方法来提供特定实现
- 使用
@Override注解确保正确重写
3. super 关键字
- 用于访问超类的成员变量和方法
- 在子类构造函数中调用超类构造函数
4. 多层继承
- 类可以有祖父类、曾祖父类等更上层的超类
- Java 中所有类都直接或间接继承自
Object类
5. 抽象类和接口
- 抽象类通常作为超类设计
- 接口可以被类实现,也是一种特殊的"超类型"关系
继承 (Inheritance) 与实现 (Implementation) 的区别
1. 基本概念
继承 (extends)
- 子类继承超类的属性和方法
- 建立 "is-a" 关系
- 单继承(Java中一个类只能继承一个父类)
实现 (implements)
- 类实现接口中定义的方法
- 建立 "can-do" 关系
- 多实现(一个类可以实现多个接口)
2. 语法差异
// 继承 - 单继承
class Dog extends Animal {
// 继承Animal类的属性和方法
}
// 实现 - 多实现
class Dog implements Runnable, Jumpable {
// 必须实现Runnable和Jumpable接口中的所有方法
}
// 同时使用继承和实现
class Dog extends Animal implements Runnable, Jumpable {
// 继承Animal,实现多个接口
}
3. 主要区别对比
| 特性 | 继承 (extends) | 实现 (implements) |
|---|---|---|
| 关键字 | extends |
implements |
| 继承数量 | 单继承(1个类) | 多实现(多个接口) |
| 访问修饰符 | 可继承protected及以上的成员 | 只能访问public成员 |
| 方法重写 | 可选择性重写方法 | 必须实现所有抽象方法 |
| 构造函数 | 子类构造函数中调用super() | 无构造函数概念 |
4. 设计理念
继承
- 表示类之间的层级关系
- 适用于有共同属性和行为的类
- 体现"is-a"关系(如Dog is an Animal)
实现
- 定义类应该具备的行为能力
- 适用于定义规范和契约
- 体现"can-do"关系(如Dog can Run)
5. 实际应用示例
// 超类 - 定义共同属性
abstract class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println(name + " is eating");
}
// 抽象方法,子类必须实现
public abstract void makeSound();
}
// 接口 - 定义行为规范
interface Flyable {
void fly();
}
interface Swimmable {
void swim();
}
// 继承超类并实现多个接口
class Duck extends Animal implements Flyable, Swimmable {
public Duck(String name) {
super(name);
}
@Override
public void makeSound() {
System.out.println(name + " says quack");
}
@Override
public void fly() {
System.out.println(name + " is flying");
}
@Override
public void swim() {
System.out.println(name + " is swimming");
}
}

浙公网安备 33010602011771号