0
모든 메소드가 가시성을 보호해야하는 간단한 Ruby 기본 클래스가 있습니다. 다른 클래스가 기본 클래스를 상속하고 메서드를 호출 할 때 문제가 발생합니다. Ruby 인터프리터가 멈추고 그것이 해석하는 첫 번째 메소드가 보호 된 메소드이고 클래스가 호출 할 수 없다고 알려줍니다. 여기 내 코드는 다음과 같습니다.Ruby Protected Methods 문제
class Base
protected
def methodOne
# method code
end
def methodTwo
# method code
end
end
오류는 하위 클래스가 메서드를 기반에서 호출 할 때 발생합니다.
Subclass.new.methodOne
분명히 Ruby의 가시성/상속 모델에 중요한 것이 누락되었습니다. 어떤 도움을 주셔서 감사합니다!
내가 내 원래의 게시물에 잘못했다 : 당신은
self.methodOne
예를 할 필요가있다. 전화 회선은 Extended.new.methodOne입니다. 당신의 대답을 사용하여, 나는 Extended 내에서 생성자를 만들었고, 당신이 제안한 것처럼 self.methodOne을 호출했다. Extended.new.methodOne이 오류를 호출한다는 것이 이상하다는 것을 알게되었습니다. – webren
내부 메소드 (자신의 메소드 사용)와 외부 메소드 (다른 객체 메소드 사용)를 호출하는 방법을 살펴 본다면. 외부에서는 public 메소드 만 호출 할 수 있습니다. 내부에서는 모든 공용 메소드, 모든 고유 메소드 (상속 된 메소드는 아님) 및 모든 자체 및 상속 된 보호 메소드를 호출 할 수 있습니다. –