日期:2014-05-20  浏览次数:20802 次

Object为什么不设计为抽象的
Object设计为具体的类有什么好处?为什么不设计成抽象类呢?

------解决方案--------------------
你这么一说我感觉挺有道理的,想想也是!
其实抽象一下也挺好。
不过个人的感觉 object不设计成抽象完全是利于编码。
很多时候并不需要做到完全的面向对象。

------解决方案--------------------
探讨
引用:

给个设计成抽象的理由先。。


面向对象的概念上 对象 这种东西不是抽象的吗?

------解决方案--------------------
都扯鸟呢?

Object本来就应该是个抽象的概念。

但是设计成抽象的class,还是表达上十个抽象的概念,并不完全等同。

或者说,你可以认为它设计上,有瑕疵。

至于什么lock不lock的,没有关系:
A: 如果认为Java的对象都是Lockable的,可以这样设计派生结构

abstract Object 派生出 Lockable 对象,
然后所有的类,继承自Lockable即可。

B:现在的Java实现,你可以认为是Lockable这个层次不存在了,融合进了Object类。

仅此而已,尽管Object不是abstract的了,但是它依然表达抽象的概念。


------解决方案--------------------
个人观点:
一:假设是抽象方法的话
那么该方法里面所有的方法都不能默认调用了,即:只能通过之类实例化父类才能调用
那么每次调用你就实例化一个
二:里面有不少是调用本机系统函数的
sun能让用户自己实例化调用本机系统函数,然后自己写一个方法?
三:个人觉得如果LZ有兴趣可以多看看
sun的原文档,原版的
翻译的都不咋地
------解决方案--------------------
楼主 其实抽象类与类差距大吗 不大!!!

你如果说要设计成抽象类 那你打算把哪个方法抽象呢?

而且我java类有很多 难道你想我每个类 都得强制实现么。。。
------解决方案--------------------
Object 里面又没有什么要抽象的东西,为什么要设计成抽象类?

Object 是一个最为基本的对象,也就是 Java 中最简单的对象,所有的类都派生于此。
------解决方案--------------------
探讨

Object 里面又没有什么要抽象的东西,为什么要设计成抽象类?

Object 是一个最为基本的对象,也就是 Java 中最简单的对象,所有的类都派生于此。

------解决方案--------------------
如果是抽象的话,那么继承它的每个类都要实现抽象的方法,不然也是抽象类,如果没有抽象方法,那么又何必设计成抽象类呢?
------解决方案--------------------
java api也不一定是完美的 比如effective java里面提到的一些
像String类的valueOf(char[]) 和valueOf(Object)两个重载方法

所以这个问题最好还是去问设计者的想法,搞不好甚至连他自己都回答不上为什么这个Object要设计为非抽象的(当然也有可能是我这菜鸟看不出来~)