ruby 의 방법 역할 영역

3104 단어 Rubysun
자바 에서 private 방법 은 자바 에서 의 의 미 는 현재 클래스 범위 내 에서 만 호출 할 수 있 고 현재 클래스 의 하위 클래스 도 접근 할 수 없 지만 같은 유형의 다른 대상 인 스 턴 스 에 의 해 호출 될 수 있 습 니 다.protected 방법 은 자바 에서 의 의 의 미 는 현재 클래스 가 있 는 전체 package 에서 볼 수 있 으 며 다른 package 류 는 접근 할 수 없습니다.
ruby 에 private,proctected 는 모두 하위 클래스 에 의 해 계승 할 수 있 지만 인 스 턴 스 에 의 해 호출 될 수 없습니다.
protected 는 같은 종류의(하위 클래스 포함)다른 대상 에서 호출 할 수 있 습 니 다.

irb(main):001:0> class AccessTest
irb(main):002:1>   def test
irb(main):003:2>     "test private"
irb(main):004:2>   end
irb(main):005:1>   def test_other(other)
irb(main):006:2>     "other object" + other.test
irb(main):007:2>    end
irb(main):008:1> end
=> nil
irb(main):009:0> t1=AccessTest.new
=> #<AccessTest:0xb773e620>
irb(main):010:0> t2=AccessTest.new
=> #<AccessTest:0xb7737334>
irb(main):011:0> t1.test
=> "test private"
irb(main):012:0> t1.test_other(t2)
=> "other objecttest private"
irb(main):013:0> class AccessTest
irb(main):014:1>   private :test
irb(main):015:1> end
=> AccessTest
irb(main):016:0> t1.test
NoMethodError: private method `test' called for #<AccessTest:0xb773e620>
	from (irb):16
	from :0
#private         
irb(main):017:0> class AccessTest
irb(main):018:1>   def tt
irb(main):019:2>    'tt'
irb(main):020:2>   end
irb(main):021:1> protected :tt
irb(main):022:1> end
=> AccessTest
irb(main):023:0> t1.tt
NoMethodError: protected method `tt' called for #<AccessTest:0xb773e620>
	from (irb):23
	from :0
#protected        (    )
irb(main):024:0> class Sun < AccessTest
irb(main):025:1> end
=> nil
irb(main):026:0> s=Sun.new
=> #<Sun:0xb770f564>
irb(main):027:0> class Sun
irb(main):028:1>  def tt2
irb(main):029:2>   tt
irb(main):030:2>  end
irb(main):031:1> end
=> nil
irb(main):032:0> s.tt2
=> "tt"
irb(main):033:0> class Sun
irb(main):034:1>   def tt3
irb(main):035:2>     test
irb(main):036:2>   end
irb(main):037:1> end
=> nil
irb(main):038:0> s.tt3
=> "test private"
#protected       
irb(main):039:0> class AccessTest
irb(main):040:1> protected :test
irb(main):041:1> end
=> AccessTest
irb(main):042:0> s.test_other(s)
=> "other objecttest private"
#protected     (   )           
irb(main):043:0> s.test
NoMethodError: protected method `test' called for #<Sun:0xb770f564>
	from (irb):43
	from :0
irb(main):047:0> class Sun 
irb(main):048:1> public :test
irb(main):049:1> end
=> Sun
irb(main):050:0> s.test
=> "test private"
#               


좋은 웹페이지 즐겨찾기