永发信息网

面向对象编程有哪些,面向对象语言的区分方法

答案:1  悬赏:40  手机版
解决时间 2021-05-09 16:57
面向对象编程有哪些,面向对象语言的区分方法
最佳答案
传统的基于类的面向对象语言的一个主要特点就是inheritance,subclassing和subtyping之间的密不可分的联系。很多的面向对象语言的语法,概念,就是从这三者而来的。比如说,通过subclassing,可以继承父类的一些方法,而同时又可以在子类中改写父类的方法。这个改写过的方法,通过subtyping、subsumption,又可以从一个类型是父类的对象去调用。但是,inheritance,subclassing,subtyping这三者并不是永远和睦相处的。在一些场合,这三者之间的纠缠不清会妨碍到通过继承或泛型得到的代码重用。因此,人们开始注意到把这三者分离开来的可能性。区分subclassing和subtyping已经很常见了。而其它的一些方法还处于研究的阶段。 在早期的面向对象语言中(如Simula),类型的定义是和方法的实现是混合在一起的。这种方式违反了今天已经被广泛认识到的把实现和规范(Specification) 分离的原则。这种分离得原则在开发是团队进行的时候尤其显得重要。更一些的语言,通过引入不依赖于实现的对象类型来区分实现和规范。Modula-3以及其它如Java等的支持class和interface的语言都是采用的这种技术。开始引入InstanceTypeOf(cell)时,它代表的概念相当有限。看上去,它似乎只表示用new cell生成的对象的类型,于是,并不能用它来表示从其它类new出来的对象。但后来,当引入了subclassing,method overriding,subsumption和dynamic dispatch之后,事情变得不那么简单了。的InstanceTypeOf(cell)已经可以用来表示从cell的子类new出来的对象,这些对象可以包括不是cell类定义的属性和方法。如此看来,让InstanceTypeOf(cell)依赖于一个具体的类似乎是不合理的。实际上,一个InstanceTypeOf(cell)类型的对象不一定会跟classcell扯上任何关系。它和cell类的唯一共同之处只是它具有了所有cell类定义的方法的签名(signature).基于这种考虑,可以引入对象类型的语法:针对cell类和reCell类的定义:class cell isvar contents: Integer :=0;method get(): Integer isreturn self.contents;end;method set(n:Integer) isself.contents := n;end;end;subclass reCell of cell isvar backup: Integer := 0;override set(n: Integer) isself.backup := self.contents;super.set(n);end;method restore() isself.contents := self.backup;end;end;可以给出这样的对象类型定义:ObjectType Cell isvar contents: Integer;method get(): Integer;method set(n:Integer);end;ObjectType ReCell isvar contents: Integer;var backup: Integer;method get(): Integermethod set(n: Integer);method restore(......余下全文>>
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
主板应该放什么CPU
求洛奇女性站姿势变成王城炼金术士站姿势的补
为什么鼠标在DNF选择频道时移动缓慢,XP这样
怎么用dnf extractor2.0.1制作界面
我在厂做老8年辞工不做咯厂方有赔偿吗?
关于ipod的设置
TX 我要你给我一个说法:
PSP放电影怎么快进啊?
绿色征途召唤练什么
我是稿汽车装饰的,杂报成人高考
我的QQ堂怎么点卜亮
我下载了QQ三国要更新好久
QQ飞车,教两招!
求问问每级对应的积分精验和问问等级?…
高三了,我却不想再继续念下去,给点建意好吗
推荐资讯
公主嫁到粤语03集-公主嫁到03集全集在线观看-
手机表格如何复制粘贴,手机电子表格怎么复制
计算机管理员如何解除来宾账户的阻止程序
魔域怎样才可以把战斗力加到1000
我万一去了另一个世界怎么办?
花园5号国际娱乐会所在哪里啊,我有事要去这
梦幻西游的89普陀有用吗?没修,防1020
微星VX600 是什么微星电脑什么系列的
我的鲁迪是满个体吗,它会亮几盏灯
流鼻血会不会是白血病?
适合吉他自弹自唱的中文歌曲
我的牙一吸凉气就疼是怎么回事?感觉好像还不
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?