Я пытаюсь использовать композицию для разложения функциональности, но не уверен, как обратиться к классу «инкапсуляции» (не уверен, что уровень вверх называется по составу). Вот надуманный пример, где Тело может видеть методы Нога, но Нога не может видеть методы тела. Мне нужно изменить модификатор доступа или создать экземпляр по-разному? Заранее спасибо.Как получить доступ к методам «контейнера» из класса «has-a» (содержится)
public class Body {
private Leg leg;
public Body() {
leg = new Leg();
}
public void takeStep() {
leg.move();
}
public Boolean isStanding() {
return true;
}
public static void main(String[] args) {
Body body = new Body();
body.takeStep();
}
}
``
public class Leg {
public void move() {
if(body.isStanding()) // PROBLEM: no access to body
; // <extend details>
}
}
Я думаю, вы также можете попробовать, как общественный ничтожной takeStep() { \t если (isStanding()) \t \t leg.move(); } – upog
'body' является ** локальной ** переменной метода' main'. Он не может быть виден вне метода. –