在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
类的定义: eg: people = new Person.new('Tom', 'male', 15),initialize方法在构造实例时被调用,是一个特殊的方法 若原有的类已经定义,又有相同的类名进行类定义的话,意味着对原有的类的进行追加;方法重新定义,结果为覆盖
对象、属性、方法: 在Ruby中,只有方法可以操作实例变量,Ruby中的封装都是强制性的。在对象外部不可以直接访问,只能通过接口方法访问。 只读属性:attr_reader 只写属性:attr_writer 即可读又可写:attr_accessor attr: name, true 读写 attr: id, false 只读 self关键字相当于java中的this
继承: 单继承,使用<即可,super关键字调用对象父类的方法,省略参数时,使用当前方法的参数进行调用 class Base def meth(info) puts "This is Base #{info}" end end class Derived < Base def meth(info) puts "This is Derived #{info}" super end end obj1 = Derived.new obj1.meth("test")
特殊方法是指某实例特有的方法 class SingletonTest def info puts "This is a SingleTon test." end end obj1 = SingletonTest.new obj2 = SingletonTest.new def obj2.info puts "This is obj2" end obj1.info obj2.info
特殊类: 属于某实例的类。 class <<obj ... end class SingletonTest def meth1 puts "This is meth1" end def meth2 puts "This is meth2" end end obj1 = SingletonTest.new obj2 = SingletonTest.new class <<obj2 def meth1 puts "This is obj2.meth1" end def meth2 puts "This is obj2.meth2" end def meth3 puts "This is obj2.meth3" end end obj1.meth1 obj1.meth2 obj2.meth1 obj2.meth2 obj2.meth3
类变量: 以@@开头,eg:@@number 使用前必须初始化 类方法:Classname.classMethod
存取控制: public方法:任何地方都能访问 protected方法:本类的方法和子类的方法都能访问 private方法:只能由对象自己访问,这一点和java不同!即在本类的方法中,不能调用本类其他对象的私有方法 默认都是public方法,除了initialize和initlialize_copy方法,它们永远都是私有方法
模块中定义的类变量被所有包含该模块的类所共享 module TestModule @@foo = 10 end
defined? 用来判断表达式是否有定义,若尚未定义,返回nil;否则,返回一个字符串描述该表达式的种类。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论