加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

什么是Smalltalk等同于Java的静态?

发布时间:2020-12-14 05:06:25 所属栏目:Java 来源:网络整理
导读:什么是Smalltalk等同于 Java的静态字段和方法? IOW,Smalltalkers在需要课堂级数据和/或方法时会做什么? 解决方法 我们使用类方法/实例变量.一个类是一个对象,毕竟可以有方法. 例如,Rectangle类有一个方法#origin:corner:所以你可以写 Rectangle origin:
什么是Smalltalk等同于 Java的静态字段和方法? IOW,Smalltalkers在需要课堂级数据和/或方法时会做什么?

解决方法

我们使用类方法/实例变量.一个类是一个对象,毕竟可以有方法.

例如,Rectangle类有一个方法#origin:corner:所以你可以写

Rectangle origin: 0@0 corner: 100@100

创建一个Rectangle.这只是消息#origin:corner:发送到称为Rectangle的对象(一个类是一个对象!),两个Points作为参数.

类侧实例变量的工作方式大致相同.作为对象的类可以具有实例变量.从SUnit库:

TestCase class
  instanceVariableNames: 'history'

然后TestCase类以通常的方式暴露了这个,使用getter / setter(#history和#history :).

编辑:我使用的@引起了很多讨论.这就是所谓的binary message,它允许一个人定义选择器,看起来只是其他语言将称为中缀运算符.例如,3 4,或0 @ 0.在@的情况下,Number类定义一个称为@的方法,取参数y,定义为^ Point x:self y:y – “返回其坐标为我自己的值,其y坐标是参数的Point”.

Point是一个有序对,但当然没有什么可以阻止一个定义更高维的版本. Point可以定义一个叫做@的方法,例如:^ Triple x:self xy:self yz:z – “返回一个R ^ 3中的一个点,其中x,y坐标是我自己的,z坐标是给定参数“.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读