Ruby - как справиться с проблемой, когда подкласс случайно переопределяет частные поля суперкласса?

Предположим, вы пишете класс Sup , и я решаю расширить его до Sub ] Sup Мне нужно не только понимать ваш опубликованный интерфейс, но и понимать ваши личные поля. Посмотрите на эту неудачу:

class Sup

  def initialize
    @privateField = "from sup"
  end

  def getX
    return @privateField
  end
end

class Sub < Sup

  def initialize
    super()
    @privateField = "i really hope Sup does not use this field"
  end
end

obj = Sub.new
print obj.getX #  prints "i really hope Sup does not use this field"

Вопрос в том, как правильно решить эту проблему? Кажется, что подкласс должен иметь возможность использовать любые поля, которые он хочет, без нарушения суперкласса.

РЕДАКТИРОВАТЬ: эквивалентный пример в Java возвращает «из Sup» , что является ответ должен также дать ответ.

5
задан Andrew Grimm 18 March 2011 в 14:16
поделиться