分享
 
 
 

Is Object Class, the Root of all Hierarchies?

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

Is Object Class, the Root of all Hierarchies?Author: C. Prashanth

Date Added: 02nd Apr 2003

Type: Tutorial

Rating:

This is a printable version of "Is Object Class, the Root of all Hierarchies?". For the complete online version, please visit http://www.devarticles.com/content.php?articleId=498

Page 1: IntroductionThis might come as a surprise for many, to see me doubting the information presented in almost all of the .NET books available and even the MSDN library, but as we delve deeper into this topic, you will find yourself in the same predicament as I am now.

Page 2: The Article

What is an Object class?

For those who are new to .NET, according to MSDN library - "Object is the ultimate superclass of all classes in the .NET Framework; it is the root of the type hierarchy."

This is the class declaration of the object class

[Serializable]

[ClassInterface(ClassInterfaceType.AutoDual)]

public class object

All the classes are required to inherit from this Object class but they need not declare inheritance from it explicitly as it is taken care internally. While all classes inherit from it, it doesn’t inherit from any super class or interface.

So what's the problem?

This I will explain with a help of an example.

Let's define a class called Foo

Class Foo

{

void show() {}

static void main(string[] args)

{

Foo f=new Foo();

}

}

If you have Visual Studio IDE or any other editor which supports intellisense, when you type f. you will get the following methods

1. Equals

2. GetHashCode

3. ToString

4. GetType

5. show

Even though you have defined only one method show since Foo implicitly inherits from Object it gets the other four methods.

Let's now define an interface called IFoo and make Foo class inherit from it.

Interface IFoo

{

void Ishow();

}

class Foo:IFoo

{

void show(){}

void IFoo.Ishow(){}

static void main(string[] args)

{

Foo f=new Foo();

IFoo ifoo=f;

}

}

Since we have inherited from IFoo, we need to implement the Ishow method. When we type ifoo.show(), we get a compile time error saying that the interface doesn’t contain a definition for show method. This is correct since an interface is allowed to access only methods declared by it even though the object it might be referring has other methods.

The problem arises now when we type ifoo.equals(f), ideally this should give a compile time error since it is not declared by IFoo interface or none of its super interface but it doesn’t. Nor does it give a compile time error for using any of the methods of Object class.

This is definitely a discrepancy from the fact that an interface is allowed to access only methods declared by it. An interface for sure can't inherit from a class so how then can we explain for the four methods of Object which are available to any interface. The only possible solution can be that there must be a super interface like IObject as declared below:

Interface IObject

{

public virtual bool equals(object);

public virtual int getHashCode();

public Type getType();

public virtual string toString();

}

and the Object class must have inherited from this interface and also that this IObject must be the super interface of all the interfaces just like Object is to other classes.

Page 3: ConclusionThis is one of the issues which Microsoft should clarify so that the programmers can have a better understanding of the language.

For more great programming articles, please visit http://www.devarticles.com. If you have an opinion or question about this article, then please post it at the devArticles developer forum, which is located at http://www.devarticles.com/forum

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有