Atu*_*eka 4 .net c# java oop object
对不起,如果这是一个愚蠢的问题,但我想了解单一根类(对象)层次结构在.Net,Java等语言中的所有优点.
我可以想到一个优点,假设我有一个函数,我想接受所有类型的(引用)数据类型.那么在那种情况下,我可以编写我的函数,而不是为每种数据类型编写函数.
public void MyFun(object obj)
{
// Some code
}
Run Code Online (Sandbox Code Playgroud)
我们从这种类型的层次结构中获得了所有其他优势?
我将从一本好书中引用一些内容 - 由Bruce Eckel 在Java中思考:
单根层次结构中的所有对象都有一个共同的接口,因此它们最终都是相同的类型.替代方案(由C++提供)是您不知道所有内容都是相同的基本类型.从向后兼容的角度来看,这更适合C的模型并且可以被认为是限制性较小的,但是当您想要进行全面的面向对象编程时,您必须构建自己的层次结构以提供内置的相同的便利性.其他OOP语言.在您获得的任何新类库中,将使用一些其他不兼容的接口.它需要努力(可能还有多重继承)才能将新界面应用到您的设计中.C++的额外"灵活性"值得吗?如果你需要它 - 如果你有大量的C投资,它是非常有价值的.如果您从头开始,其他替代方案(如Java)通常可以提高效率.
可以保证单根层次结构中的所有对象(例如Java提供)具有某些功能.您知道可以对系统中的每个对象执行某些基本操作.单根的层次结构,以及在堆上创建所有对象,大大简化了参数传递.
单根的层次结构使得实现垃圾收集器(它可以方便地构建到Java中)变得更加容易.必要的支持可以安装在基类中,因此垃圾收集器可以将适当的消息发送到系统中的每个对象.如果没有单根的层次结构和通过引用操作对象的系统,则很难实现垃圾收集器.
由于保证运行时类型信息在所有对象中,因此您永远不会得到一个您无法确定其类型的对象.这对于系统级操作(例如异常处理)尤其重要,并且允许更大的编程灵活性.