面向对象编程有哪些,面向对象语言的区分方法
答案:1 悬赏:40 手机版
解决时间 2021-05-09 16:57
- 提问者网友:骑士
- 2021-05-09 02:47
面向对象编程有哪些,面向对象语言的区分方法
最佳答案
- 五星知识达人网友:酒安江南
- 2021-05-09 04:11
传统的基于类的面向对象语言的一个主要特点就是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(......余下全文>>
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯