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

时间:2011-11-28 09:30:31

标签: java oop inheritance coding-style instance

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

 CLASS A
    ^
    |                And     CLASS C
    |
    |
  CLASS B

我可以通过继承使用A类中的方法,在B类中 在同一个我可以使用类A中的方法,在类C中,通过创建类A的实例(说A是公共)
使用继承,只减少创建新的Object / Instance?
Plz帮助我更好地理解!

4 个答案:

答案 0 :(得分:0)

一个很大的好处是多态性。如果类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'
}

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

不同之处在于需要理解将B类传递给作用于A类的函数的能力。在这个意义上,B是一种A类,其中C类拥有或拥有A.这种差异很小而且只有很大在某些情况下。

这并不是说代码tbh中的差异通常是明确的。通常人们会在他们真正想要所有权时继承,有时他们会在对象真正属于某种其他东西时拥有所有权。