• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Ruby--类

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

类的定义:
class ClassName
def method_name(variables)
#some code
end
end

eg:
class Person
def initialize(name, gender, age)
@name = name
@gender = gender
@age = age
end
end

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;否则,返回一个字符串描述该表达式的种类。

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
切换mac默认的ruby版本(rvm进行ruby管理)发布时间:2022-07-13
下一篇:
SketchUp + Ruby 二次开发初识发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap