• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Ruby程序語言之方法存取控制

    發表于:2007-06-11來源:作者:點擊數: 標簽:
    在許多情況中,當你設計你的應用程序時,你可能想實現一個方法僅為一個對象內部使用而不能為另外一些對象使用。 Ruby 提供了三個關鍵字來限制對方法的存

    在許多情況中,當你設計你的應用程序時,你可能想實現一個方法僅為一個對象內部使用而不能為另外一些對象使用。Ruby提供了三個關鍵字來限制對方法的存取。

    • Private:只能為該對象所存取的方法。
    • Protected:可以為該對象和類實例和直接繼承的子類所存取的方法。
    • Public:可以為任何對象所存取的方法(Public是所有方法的默認設置)。
    這些關鍵字被插入在兩個方法之間的代碼中。所有從private關鍵字開始定義的方法都是私有的,直到代碼中出現另一個存取控制關鍵字為止。例如,在下面的代碼中,aclearcase/" target="_blank" >ccessor和area方法默認情況下都是公共的,而grow方法是私有的。注意,在此doubleSize方法被顯式指定為公共的。一個類的initialize方法自動為私有的。

    classRectangle

    attr_accessor:height,:width

    definitialize(hgt,wdth)

    @height=hgt

    @width=wdth

    end

    defarea()

    @height*@width

    end

    private#開始定義私有方法

    defgrow(heightMultiple,widthMultiple)

    @height=@height*heightMultiple

    @width=@width*widthMultiple

    return"Newarea:"+area().to_s

    end

    public#再次定義公共方法

    defdoubleSize()

    grow(2,2)

    end

    end
    如下所示,doubleSize可以在對象上執行,但是任何對grow的直接調用都被拒絕并且返回一個錯誤。

    irb(main):075:0>rect2=Rectangle.new(3,4)

    =>#<Rectangle:0x59a3088@width=4,@height=3>

    irb(main):076:0>rect2.doubleSize()

    =>"Newarea:48"

    irb(main):077:0>rect2.grow()

    NoMethodError:privatemethod'grow'calledfor#<Rectangle:0x59a3088@width=8,@height=6>

    from(irb):77

    from:0

    默認情況下,在Ruby中,實例和類變量都是私有的,除非提供了屬性accessor和mutator。

    (責任編輯:銘銘 mingming_ky@126.com TEL:(010)68476606)


    原文轉自:http://www.kjueaiud.com

    ...
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>