Предположим, вы пишете класс 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»
, что является ответ должен также дать ответ.