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



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

 CLASS A
    ^
    |                And     CLASS C
    |
    |
  CLASS B

可以在类B中继承类A中的方法。
同样,我可以使用类A中的方法,在类C中,通过创建类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'
}

继承的要点是多态性:允许其他类使用ClassB的实例,而只知道它可以用作ClassA

我最喜欢的例子是流——我可以很容易地写一个copyStream方法,例如InputStreamOutputStream,只使用在这些类型上声明的方法。然后我可以将FileInputStream复制到ByteArrayOutputStream,或使用与网络相关的流等,而无需更改copyStream方法中的任何代码。

使用继承的主要原因是不删除冗余代码。

继承和所有可能的魔法是OOP的一个关键的中心点。扩展一个类不仅允许您使用它的功能,还允许您修改(通过多态)和添加更多的功能。

区别在于需要理解将类B传递给作用于类A的函数的能力。从这个意义上说,B是类A的一种类型,而类C拥有或拥有A。

这并不是说在代码tbh中,这种区别通常是显式的。通常,当人们真正想要所有权时,他们会继承,有时,当一个对象确实是其他东西的类型时,他们会继承。

最新更新