当前位置:  开发笔记 > 编程语言 > 正文

为什么System.Object在.NET中不是抽象的?

如何解决《为什么System.Object在.NET中不是抽象的?》经验,为你挑选了3个好方法。

我知道它通常被用作锁定对象,但这真的是充分的理由吗?的意义是什么

object o = new object();

非抽象类是表示实际对象的东西."asdasdf"是一个字符串.什么实际的实例可以有"对象"类?没有意义,OOP明智.我的问题是它是否存在某种实际原因(除了用作锁定对象).



1> Vojislav Sto..:

回答这个问题的最简单方法是问另一个问题:Object类是否有任何抽象概念?由于它没有理由是抽象的,所以不是.


我理解Object类提供了一个默认实现,但这不是具体的原因.即使实现了所有方法,也可以将Object类标记为抽象.
它抽象的一个原因是它没有具体的目的.没有具体目的的东西应该是抽象的,以帮助我们作为人类更好的grok API.

2> David Morton..:

有时您只需要一个Object,而不需要任何其他内容,例如在实现多线程锁定时使用随机引用类型.不使对象抽象允许在这些情况下使用.Monitor.Enter和Monitor.Exit类(它是C#中"lock"关键字的基础)可以获取任何给定对象的锁定,而不管实现如何.



3> Omar Kooheji..:

当然,一个类是抽象的意味着它有一些需要实现的功能......

System.Object执行它所需的一切,因此它不是Abstract.

我认为你误解了为什么事情是抽象的,这是因为它们包含一些有用的功能,并没有规定你如何实现它们的某些功能部分.

基本上它们是半制造的类,就像一个模型工具包,你可以自定义按照你想要的方式工作,但你不必从头开始整个过程​​.

它们不存在阻止您创建它们的实例.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有