亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java 继承机制详解:extends、super、多态与设计原则

继承让子类获得父类属性和方法,实现代码复用与层次化组织。Java 采用单继承(一个类仅能 extends 一个父类),但可实现多个接口。

extends 关键字

class Father { void work() {} }
class Son extends Father { void study() {} }

子类拥有父类非私有成员(字段、方法、嵌套类)。构造器不继承,但子类构造器首行隐式/显式调用父类构造器。

继承示例:计算器扩展

class Calculation {
    void addition(int x, int y) { System.out.println("和: " + (x+y)); }
    void subtraction(int x, int y) { System.out.println("差: " + (x-y)); }
}

class MyCalculation extends Calculation {
    void multiplication(int x, int y) { System.out.println("积: " + (x*y)); }
    
    public static void main(String[] args) {
        MyCalculation mc = new MyCalculation();
        mc.addition(20, 10);      // 继承的方法
        mc.subtraction(20, 10);   // 继承的方法
        mc.multiplication(20, 10); // 自有方法
    }
}

super 关键字

两大核心用途:

  1. 访问被隐藏的父类成员:super.field、super.method()
  2. 调用父类构造器:super(args) 必须是构造器首行

区分同名成员

class Super { int num = 20; void show() { System.out.println("父类"); } }
class Sub extends Super { int num = 10; void show() { System.out.println("子类"); }
    void demo() {
        System.out.println(super.num); // 20
        super.show();                  // 父类
    }
}

调用带参父类构造器

class Super { Super(int age) { this.age = age; } int age; }
class Sub extends Super { Sub(int age) { super(age); } } // 必须显式调用

IS-A 关系与 instanceof

extends 建立 IS-A 关系:Dog extends Animal → Dog IS-A Animal。

Animal a = new Dog();
System.out.println(a instanceof Animal);  // true
System.out.println(a instanceof Dog);     // true

instanceof 用于运行时类型检查,防止 ClassCastException。

HAS-A 关系(组合)

类包含另一个类的实例,而非继承。体现“拥有”关系,降低耦合,复用性更强。

class Engine { void start() {} }
class Car { private Engine engine = new Engine(); // Car HAS-A Engine }

继承类型

⚠️ Java 不支持多重继承(class C extends A, B 非法),但可通过实现多接口实现类似效果。

设计原则

  1. 里氏替换原则 (LSP):子类对象能替换父类对象而不破坏程序
  2. 优先组合优于继承:除非明确 IS-A,否则用 HAS-A
  3. 封装变化:将变化点抽象为接口/抽象类,子类实现细节
  4. 避免过深继承树:超过 3 层建议重构

java

  1. 掌握 C# 继承:概念、类型与实战代码完全指南
  2. C++ 继承完全指南:构建可复用的强大类层次
  3. C# 继承完全指南:基类、派生类、初始化与多重继承替代方案
  4. 深入理解 Java final 关键字:变量、方法与类的不可变性
  5. Java instanceof 运算符完全指南:用法、继承与接口检查
  6. 深入理解 Java 静态嵌套类:用法、差异与实战示例
  7. 精通 Java 匿名内部类:定义、语法与实战示例
  8. Java 单例模式详解:安全实现与使用指南
  9. 精通 Java 反射:运行时检查类、方法与字段
  10. 掌握 Java ObjectOutputStream:序列化、核心方法与实战示例
  11. 掌握 Java 泛型:构建可复用、类型安全的代码
  12. 掌握 Java 文件操作:java.io 包下的创建、读取、写入与删除