CSDN博客

img lzmtw

[水如烟]我对“类”的理解

发表于2004/10/20 11:49:00  6084人阅读

[水如烟]我对“类”的理解

 

原贴见:http://community.csdn.net/Expert/topic/3450/3450025.xml?temp=.9761316

因为有人说看了反而有误导,反而糊涂了,所以没继续写下去。

只是为什么错了,倒是没人明确指出来,因此在这贴出来,供批评指正。

如果有价值的话,还可以继续写下去。

 

开场白:今天,哦,是昨天,有人问这个问题,我觉得还是有点说细些的必要,可能对有些人有点启发,当然,也会适得其反,为什么呢,那就要先看声明了,郑重的。

 

声明:本人对NET的使用真是东炒西炒,点点滴滴的,既不系统,概念也特差,不是不知道定义概念的重要性,那是基本功,上巅峰的基本功,只是自己人老了,不中用了,记性差了,所以只好将就而过,用到再去看吧,再去找吧,就这样,基本功不好,定义概念都不清楚,谈别的就更不用说是如何糟糕了。这可不是废话。好了,只要你知道,说错了不要骂我,笑当然是可以的,对的呢,老天才知道对还是不对。总之,不要信下面所说的,至少不要全信,要以批判的眼光来看它就行了。

 

计划:说清楚这个问题,或者说将我的理解全部的说出来,肯定不是今晚能够做得到的。现在两点多了,明天不知还上不上班都不知道。因此是一段段说的了,分章节我是做不到的了,因为自己好久没写过东西,况且自己对这些理解也没理得稍为系统些,因而只能是得过且过,想到哪说到哪了。估计要用一周时间吧,说不定说一周时间也说不完,为什么呢,因为一周时间也只有七天嘛,如果有五天都没写,那当然也是说不完的了。

 

办法:说是理解,声明说了,我是不能讲概念的,我仅只是讲我的理解。怎么说呢,还是用昨天贴子那个事实,就是人、学生老师,是怎么弄成班级的。

 

一、事物和类

哈,我用了“一”,并不是说我弄章节了,只是为了给自己现在的思想限定在这个范围,不要去想别的,就此而矣。

 

万物皆是类。古人说,(不知道真说过没有,以下的全是乱说的,我说了人老了记不住东西了),菩提本无树,明镜亦非台,道的是世间万物皆虚的道理,哎,NET里说,万物皆是类哪。怎么这么矛盾的,难道我们的老祖宗真的(说了,全是我的理解,不知道NET里真说过万物皆类没有,我还真没去查证,当然,我也是当我们的老祖宗说过那句话的)错啦?想来想去,还是应该没错的,因为哪,我们的老祖宗只说最后的状态而矣,类呢,到最后不都全DIPOSE了吗,那不是翘翘去啦。所以不矛盾。我们现在的知识灌输着,物质最终可以由夸克等这些小元素组成,哈,好象今年物理诺贝尔奖给的就是这个,我们的老祖宗说,是由金木水火土组成的,为什么都撑着饭去想这些呢,原来他们是想找出这个基类!物质的基类!NET最聪明啦,无论世道怎么变,它的基类都是OBJECT,是物质,你怎么说它都是正确的。为什么要找这个基类,用处太大了,因为只须继承它,添加一些许玩意儿,就是一个新基类了,然后又添加点东西,又是。。。,哈,就是说,它可以重建一个新的新世界来了。恁你怎么想都可以,掌握了这个基类,哈,不用发财了,因为世界是你的了,真真正正的属于你的了。现在的应用呢,最兴的,就是生物工程中的基因工程了,克隆?反基因?老天,这就是寻“基”的好处,你可看清楚了,是“基”,不是“鸡”。NET呢,是不是更伟大呢?事实确实如此,它就凭一个OBJECT,你想建什么,都可以建成什么着。它已经做到啦。好啦,说到这了,休息,明天继续。

 

二、基类

趁着做事前有些时间,说说这个玩意儿。

要找到最原始的基类还真是头痛的事。按道理说,基类也是从它的基类继承过来的才是,但最原始的呢?这就是世界的本源问题了。自个儿觉得,这个本元应该是没什么特性的,也不依附于任何物质上,如果它自身带有特性的话,后头继承它的肯定都具有这个特性,也就是血统了。现在通过人的基因来鉴定当时你是否在现场,是否参与了这起什么什么案,法官以此为证据判,那就是因为那些特性只有你这个人才会有,你的血液、毛发等等都继承了你某个具有这种特性的特别的基元。老祖宗,哈,(觉得中华的老祖宗真是令我自豪),老祖宗的话还是特别合我口味,万物皆虚也,事物是从无中生有的,世界本是虚的,本是混沌,本是无序的,本是空空如也的,只是真不知是什么力量蹦出个什么夸子出来。虚的东西有力量吗?那可是大的很哪。黑洞,对于黑洞,你觉得它不存在,如果你觉得它存在的话,那是不可能的,因为那时你也已经卷进里头了,已经到了另一个世界,也根本感觉不到它的存在。但是,你能说,黑洞没什么力量吗。有人说,黑洞造出了这个基元,真觉得很是有道理。这么说,基元是有的,基元的基类也是有的,不过它是虚无的方式存在的,基元的产生要靠另外一个世界的力量。哈,打住!OBJECT!除了佩服,只有更是佩服了。它没有任何特性,但它也具有任何特性。OBJECT是没有BaseType的,但其它的肯定都有。真不知道,NET是怎么弄这个基元的,除了佩服,还是佩服哪。休息一下。

 

三、程序和类

面向对象来编程,就是自始至终的以类的观念来看待对象。你的程序就是一个对象,也就是一个类,只是这个类中还有好多类,它是类的组合,组合就是所谓的封装,最终的成品就是类:类、类、类,封装:封装、封装、封装。好,上班了,大家开心!

 

除了基元,我们能创造新事物,我们能改造世界!

以下说如何建类。

 

四、事物的普遍性和基类

作为基类,它是所有它的继承类的共性集合。作为对象(基类的实例),它就是所有同类事物共有的属性和行为。比如,狗、狼是犬科动物,他们各有特征,但也有相同点,那就是都具有犬科动物的属性和行为,犬科动物的原型就是狗类、狼类的基类。

做好基类,我们要在平常生活中要善于观察事物,勤于分析,理出共性的东西,并发现它的运行规律。共性的东西就是基类的属性和事件,运行规律就是基类的方法,这些,就是事物的普遍性。哈,倒好象我在卖弄辩证法了。

 

五、事物的特殊性和继承类

对一特定事物的原型我们有了系统的了解了,那就好办多了。我们只要只关心比较狗跟狼跟狐跟熊猫等等不同的地方,找出犬科动物中只有它本身才具有的属性和行为,那我们就继承犬科动物的原型(即犬科动物类),再添加这些属性和行为(事物的特殊性),就建好了狗类了。

只要你愿意,你可以在陌生人敲门时,实例化狗类,保证有一条狗来护着你。当然,这只是一只普通的狗,造一只你理想的狗,千般忠心万分能耐,看来你还得继承这个狗类来造一个超级狗类并实例化才行。

 

一会说说封装性吧,注意,是封装性而不是封装。

 

六、事物的封闭和类元素的封装性

我们为什么穿衣服,是因为我们身上的有些地方不想暴露出去,或者是为了保护某些地方不受生存环境的损害。我们要住在房子里,房子本已是一个泥(什么泥都好)桶了(其实跟荒野的那个小包没什么两样,当然还是有点两样的,至少还有一丝亮),还要加什么网,什么门,说明什么呢,说明封闭的必要。老毛年代要闭关,要自力更生,那是那个历史背景下的必要。

这部分可能比较长,先休息一下,上阳台看看天空,抽支烟再说。

 

题外话:学点哲学,终生受益。老毛在他那个年代之所以是最伟大的,是因为他的哲学理论强劲,前瞻性准,并“武装”了一大批人。我们看不到刘少奇有什么具体成绩,但他成为国家主席,我想最大一个原因是他的理论水平,在党建上他的理论功不可没(我不是党员)。老毛说,成吉思汗,只识弯弓射大雕,那只是因为成吉思汗没留下什么文化遗产,所以他并不将吉以为然。古今中外,最受后人景仰的人,都是那些哲学家,理论家,文化巨匠,科学家排在后面。(个人观念,不可争论,哈)

 

PUBLICPRIVATEPROTECTFRIENDPROTECT FRIENDSHADOWS

声明:对以上修饰词的理解,以下的理解可能错误,或者表述偏义。

事物的特性有些是暴露的,有些是封闭的,因此,类的元素(MSDN上说的是实体,注意,是实体,而不是实例,应该是类、类实例、属性、方法、接口、委托、结构等等的统称,我不去数了)也应该有些是开放的,有些是封装的,这就是说类元素要讲究封装性。事物的封闭和暴露,可以通过身体穿不穿衣服、国家开不开海关来解决,在类呢,用上面这些修饰词来标识。下面一个个讲,关键的错误也跟着来了,可以争论,也可以批评。

 

Public

对人来说,眼睛是Public的,暴露的,任何人都可以看到,无论是亲人、朋友、老外,甚至是你的狗;在任何场合也可以看到,自个儿的房间不用说了,澡堂,马路等等。

类呢,受Public修饰的元素,与之有关系的都可以看,也可以用;在任何类,自身、子类更不用说了,无论是任何项目,甚至是工程,只要引用了它的类,也都可以看到,并能用。

总之,它就是太阳,普照万物,万物要享受的话,随时随地,只要你有意思,都能用得到。

为什么我只说眼睛不说脸头呢,哎,我好难看到巴基斯坦科威特姑娘的脸蛋(电视上)。

 

Private

对人来说,你的精神是Private的,真正属于自己的东西,你不通过说话写字或者是传感器之类的高科技(不知道有还是没有,测谎器只是分析神经电流的脉冲罢了,真不知道现在有没有接受人思想的东西,科幻片上倒是见过的),等等方式传达出去的话,别人是根本摸不着你的头脑的,无论是要家里还是澡堂和马路,当然,思想是属于自己的,你身体的各部分都可以跟它联络,并相互作用。

对类来说,当然也只是类内里的各元素跟这个元素发生作用,或者只是作为内部信息流的中转站,或者用来记录一些状态。外部要了解它的话,包括它的子类,那要看这个类有没有提供某些途径给外部了。即使外部能得到这个元素的某些信息,那也是不全面的,也不能肯定这些信息是不是真是这个元素的本来面目。其实,外头根本就不知道这个元素究竟存不存在。

 

暂且打住,要吃饭了,晚上要加班。说这些涉及到定义概念的理解,是我的弱项,真有点头疼了。

 

 

趁等招呼的时间(我给人呼来唤去的)再来说两句。

事物的普遍联系和Public的必要性。

事物是普遍联系着的,纯粹孤立的事物是不存在的,除了产生基元的物质之外(当然它也是存在的,不过它对我们来说是非事物,非物质,根本没有共性的东西,无法沟通的东西。哈,可能是胡诌)。国门总不能完全关闭,就算关闭也可能是半遮半掩的,或者象是你家的门儿,虽然晚上可能都关着,但白天总得开开。当初为什么不一下子解放香港呢,人家都跑啦,就留着空门给你了,可老毛就是不准解放大军越罗湖桥一步,为什么呢,香港是新中国成立后跟外界交流的最理想的中转站。虎门呢,离大陆这么近,是一两公里吧,距台湾岛可远着哪,蒋老头应该都放弃了,可老毛也要不解放,要通过虎门,通过相互打炮来传递信息。解放了虎门,完全孤立台湾岛,老蒋就算不死心,他那班门人,那些后来者,会跳墙(只是比喻,没隐喻的意思在这里,我爱台湾岛和台湾人民)的,可能的结果就是早早独立出来了,而当时国势还是没有能力和岛背后的所谓支持者斗持的,这种结果当然是不想看到的,因此虎门是安安稳稳的做大陆和台湾岛的信息交流站。可笑的是,信息互通是以双方打炮的形式来进行的。

 

类也是,全部Private的类是没有存在的价值的,总会有或至少有一个出口,就算堂堂正正的大门没有,也会留有一个暗门,或是后门的,暗门或后门,就是后面要说的ProtectFriend也算是一个吧。

 

事物的孤立性和Private的必要性

完全敞开国门或你家的门儿是不可能的,任何事物也有孤立性的一面。因此类也有Private的必要了。建一个类,如何确定一个元素要不要Private呢,那要看它本身在类中与别的元素之间的联系了,越是紧密,Private的必要性越强;如果这个元素是类某个特性状态的记录者,这种状态是生来就具备的话,它的变化有其特殊的规律的话,那它的Private必要性也是很强的。

 

趁着头发没干,又来说两句。明天,哦,是今天,今天的白天和晚上(现在是子夜,不是晚上,哈,现在才知道,原来子夜比白天、晚上还早得多哪),可能抽不出时间写了,所以也有必要说上两句。

 

继续谈Private,现在从量变和质变的角度来看Private

 

有心人可能看得出,我现在是写NET类的辩证法,从理论上看待类,哈,高!(有时我也赞赞自己的)。至于有些人关心的示例,那是实践论的范畴了,是第二部分的内容。一个事物,要使用它,或说是对它进行作用,取得好效果的话,若有条件,先看有关这个事物的理论方面的东西,然后再来指导自己更好的去作用它,那才是正道,虽然动手慢,但一旦动起手来,肯定比盲人摸象摸得更准些,解牛比不上庖丁,至少准头不会差得太离谱。

 

Private是如此重要,我不得不再哆嗦两句。类之所以是这个类,它的重要特性离不开Private来保护。特别是重要的属性,是不能随便的供不相关的元素来动手动脚的。这个属性值一旦变到一定程度,就可能使这个类面目全非,发生变质了。所以用Private来保护它(当然不能死板,可以通过ProtectFriend授权小范围的别的类来参考或作用,那是后面要说的)。如果不好理解的话,我就举个例子来验证量变是怎样引起质变的。一条棍子,长长的棍子,我切了一小段下来,还是一条棍子,再切,还是,再切,还是,再切切切。。。是不是棍子,你就不能肯定了吧,当剩下的那段它原来方向的“长度”小于原来方向的“宽度”时,就不是原来的棍子了,除非来个九十度转弯,它才会是棍子,只是此棍子非彼棍子了。Private的作用就在这,保护类,永葆类的本质。当然,类的内部的固有方法也是,只供内部使用,不可供外来者使用,因为不相关的使用它了,有可能影响到别的值,类特性值,有可能致使这个类非类了。

 

说了上面这些说,我又想起了自由和人权问题。言论能随便的自由吗,人权能随所欲为吗?不可能!一个类有Private,一个社会一个国家当然也应有约束的必要,无政府,绝对自由,那肯定是家不成家,国不为国的了。美国佬总指着中国说这说哪,我看哪,世界最多的Private,肯定就在美国。尖端技术,高级人才,超前理论,肯定都是Private的,哪有Public份,连ProtectFriend的也很少。

 

哎,有点气,思路断了,睡觉吧。晚安。

 

有的话,可能也是Shadow,哈,叹,万事靠自己,自己努力吧,自己做的过程中,人家不指三道四,那也由它吧,总有一天我们Private的东西也会发展丰富起来的。安心睡觉。

 

我也是第一回从辩证法的角度来审视类,理解类,说到哪想到哪,以前没这么想过。不过好象这样来看类、类的组织、类元素的特点,倒象是比硬记概念更好理解些,对以后怎么用它,为什么用它,事前有了点数。

 

说得不好,别骂就是了。我绝对没有卖弄什么的意思在里头,其实这样的说出来我的功底也全暴露给众人了,对我没什么好处。真要卖弄的话,我要边摘书边整理,绝对不会就这样的边想边打边贴的道理。有人说是水贴,这我心里是不赞同的,我说了那些,也是帮助我来印证理解那些概念的原义罢了。说白了,除了那篇论文不算,除了那次替人(不是我的)写“情书”的那篇不算,这是我最长的一篇文章了(当然,以前写的那些公司总结是不入围的)。

 

事物的亲密度和Protect

在辩证法中,有没有亲密度的讲法,好象是没有,或者会有另一个名词来替代。在这我不管了,我就按我自己的理解(自己的理解不仅仅针对现在所说的类,也包括现在用到的一切“知识”)来写。在生物学上,纲、目、科、属、种就是一条亲密链,纲是基,后面的继承前头的基成为一个新的基。对我们呢,就是亲属关系了。有一些特性,在这条链中具有本身的特殊性,是外界验证这条链本质的关键参数,在类中,要定义这些特性,上面说了,应该用Private来标识。但是,这个特性是这条链的对象都具有的,后面的继承了前头的基类成为一个新的基类后,也应该具备这个特性,如果前头的基类将这个元素弄成Private,那就不能很好的反映或者至少是不合理的反映这条链的关系了,而且,基类获取继承类的信息时,这个属性在两者之间就不能很好的沟通(这里好象说得“高深些”,我暂时只能这样表达)。为了解决这个问题,NET提供了Protect来使基类用它取代Private标识关键元素,对继承类来说,这个元素是Public的,而对非继承它的别的类或说是外链,这个元素是Private的。

比如,你胸前的那颗痣(如有的话并且是遗传性的,但只是从你开始),你的子女是看得到的(而且他们也有),别人就看不到。我一直没用子类父类的说法,就是这里出了问题。本来嘛,你本身是继承了父类的,到了你才有了那颗痣,才Protect,可是,这颗痣父类是看不到的。哪有老爸老妈看不到自己儿女身上那颗痣的道理,于情于理不通,所以我就不用父类子类的说法,只说基类和类。

 

事物的地域性和Friend

事物的纵向联系有亲密度之分(上面说的),事物的横向联系也有亲密度之分,就是事物的地域性。一些属性和行为会按是否属于这个区域来授予作用权限,是则给,不是则不给。比如我国刚开放时的经济特区,属于的话就享有优惠政策(资金、财力、人力、税收等等),不是的话则不给。比如WTO、欧共体、亚太、泛珠等等,有特别贸易规则。当然还有什么军事同盟的,很多。又比如,房间、马路、澡堂,对你那颗痣来说,房间和澡堂属于同一个地域,在自己的房间免不了有露胸的时候,到了澡堂呢,那也是露胸的地方,别人是可以看到那颗痣的,当然,马路上别人应该是看不到的。就是说,事物的地域性特征也是普遍存在的。

在类中,这些优惠政策或说特别的属性和行为,用Friend来标识相关的元素。它所存在的地域就是程序集。在程序集包含的类都可以用到它,别的程序集是看不到的。

 

PROTECT FRIEND

这样很好的可以理解了,就是这个属性或行为可以按亲密度来授权,也可以按地域性来授权。Public对任何亲密度、任何地域都适用,Private对任何亲密度、任何地域都不适用。

哈,终于可以歇一口气了。

 

事物的欺骗性和Shadows

这个跟上面所说的不是一个范畴,留待下面再讲。不过,它反映了的是事物的欺骗性。

 

上班了,打住。开心。

 

 

阅读全文
0 0

相关文章推荐

img
取 消
img