java - 除了减少冗余代码之外,继承的最佳用途是什么?

标签 java oop inheritance coding-style instance

继承的最佳用途是什么,除了它会减少冗余代码!
让我们举个例子
A类:基类
B类:子类
和 C 类。

 CLASS A
    ^
    |                And     CLASS C
    |
    |
  CLASS B

我可以通过继承在 B 类中使用 A 类中的方法。
同样,我可以在 C 类中使用 A 类中的方法,
通过创建 A 类的实例。(假设 A 是公共(public)的)
使用继承,只减少创建新对象/实例?
请帮助我更好地理解!

最佳答案

一个很大的好处是多态性。如果类 B 和 C 都继承自 A,那么只要需要 A 类型的对象,就可以用 B 类型的对象或 C 类型的对象替换它。假设在 B 和 C 中重写了相应的方法,这根据您传递的对象获得不同的行为非常方便。

例子:

class A {
    public void foo() { System.out.println("A"); }
}

class B extends A {
    public void foo() { System.out.println("B"); }
}

class C extends A {
    public void foo() { System.out.println("C"); }
}

然后:

public static void printMessage(A obj) {
    obj.foo();
}

public static void main(String[] args) {
    A b = new B();
    printMessage(b); // prints 'B'
    A c = new C();
    printMessage(c); // prints 'C'
}

关于java - 除了减少冗余代码之外,继承的最佳用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8293836/

相关文章:

Java Swing : Waiting for Mouse Clicked event before returning an Int

java - LWJGL鼠标滚轮输入

php - 类方法的正确 DocBlock 注释,实现了工厂设计模式

javascript - OO Javascript 是否有 `to_bool` 或 `__len__` 等效项?

java - 检查一个数组的元素是否存在于另一个数组中(JAVA)

c# - 这个 C# 构造在做什么,为什么? MyClass<TMyClass> : MyClass where

swift - 如何使用各种继承参数覆盖函数(Swift)

java - 如何使用 Maven 在测试范围内设置环境变量?

Java 正则表达式 - 匹配模式的第一次出现

java - 制作三个轻度相关类的数组