c#應用反射挪用類型成員示例。本站提示廣大學習愛好者:(c#應用反射挪用類型成員示例)文章只能為提供參考,不一定能成為您想要的結果。以下是c#應用反射挪用類型成員示例正文
創立類: class後跟類名,個中類名的首字母必需要年夜寫。實例化時,經由過程new辦法實例化。在c#中有結構器,結構器與類同名。在ruby中,結構器為initialize辦法。當經由過程new辦法實例化一個類對象後,會主動挪用initialize辦法,把new中的參數傳遞給initialize辦法停止初始化。在c#中的域,在ruby中稱為實例變量,界說時前邊加@前綴,表現是一個實例變量。
class Customer
def initialize(name,age)
@name,@age=name,age
end
end
c1=Customer.new("Tom",20)
拜訪器
實例變量只能經由過程實例辦法來拜訪。假如要拜訪它們可以供給辦法拜訪器。在c#中稱為屬性,Java中也是界說辦法來表現屬性。
class Customer
def initialize(name,age)
@name,@age=name,age
end
def name
@name
end
def age
@age
end
end
以上界說了兩個辦法x,y,它們可以讀@x,@y實例變量。這就界說了讀屬性辦法。假如要停止賦值操作,還要界說寫屬性辦法:
def name=(v)
@name=v
end
def age=(v)
@age=v
end
要留意的是:
c1=Customer.new("Tom",20)
c1.name="Jhon"
只要在實例中能力如許應用寫屬性。假如在類中,不克不及經由過程name=value如許來取代@name=value。但可以經由過程self來如許應用:self.name=value
Ruby供給了簡化界說屬性辦法:attr_reader和attr_accessor。後邊跟符號,會主動創立同名的讀寫屬性。
class Customer
def initialize(name,age)
@name,@age=name,age
end
attr_reader :name,:age
attr_accessor:name,:age
end
c1=Customer.new("Tom",20)
puts c1.name,c1.age
c1.name="Jhon"
c1.age=30
puts c1.name,c1.age
類變量,常量,類辦法
類變量以@@開首;常量經由過程[類名+::常量名]停止拜訪;類辦法在實例辦法辦法名前加類名。在界說類辦法時,可以采取一種方法:
class<<self
def 辦法
end
end
那末,這個辦法就是一個類辦法:
class Customer
def initialize(name,age)
@name,@age=name,age
end
class <<self
def showName
'ok'
end
end
end
puts Customer.showName
辦法的拜訪性
public:私有的,默許情形下類中的辦法是私有的,可以用在任何處所。結構辦法initialize為公有的。
private:公有的,類外部應用的,只能被類或子類的實例辦法所挪用。只能經由過程self隱式挪用,不克不及經由過程一個對象顯示挪用。一個公有辦法m,只能經由過程m挪用,而不克不及經由過程o.m或self.m挪用。
protected:受掩護的,類外部或子類外部應用的辦法。與公有的差別是:除self隱式挪用外,還可以經由過程該類對象顯示挪用。
可以經由過程以下辦法來聲明辦法的拜訪性:
#拜訪性 private protected public
private
def private_method
puts "private method testing"
end
protected
def protected_method
puts "protected method testing"
end
public:protected_method
工場辦法
應用new辦法公有,然後經由過程類辦法創立實例
class Fruit
private_class_method:new
def Fruit.CreateFruit
new Fruit
end
end
f=Fruit.CreateFruit
模塊module
module感化之一是做為名字空間用。挪用類時與挪用常量雷同:兩個冒號
另外一感化是作為混入。經由過程include把模塊中的實例辦法包括到其它類中。感到功效像C#中的名字空間引入。