Вы пытаетесь взглянуть на всю систему и сразу контролировать ее. Точка объектно-ориентированного программирования состоит в том, чтобы скрыть детали того, как ваш 3-й класс может понадобиться, чтобы сделать что-то, вызванное вашим первым.
Необходимо, чтобы эти классы связывались друг с другом в первую очередь. Предположим, что первый класс - это то, где все начинается. Этот класс должен иметь четкий набор вещей, которые он позволяет своим пользователям запрашивать у него, и он должен реализовать эти вещи, изменив его внутренние ценности и попросив любые объекты внутри него сделать что-то, что ему поможет. Держите этот образ мышления, опустив цепь, и это будет иметь больше смысла.
Ваши комментаторы правы. Вам нужно различать класс - кучу кода, определяющий способ работы объекта - и объекты - конкретную вещь во время выполнения, которая получает и отправляет сообщения.
В сообщениях объектов Java есть действительно вызовы функций, и мы знаем, что за кулисами происходит немного процессуально-подобных потоков. Игнорируйте это.
Надеюсь, это поможет.
Вкратце - подумайте о делегировании ответственности за объект и способе программирования, когда вещи делают запросы к объектам, которые могут помочь.
Как более конкретный ответ, как некоторые объекты могут взаимодействовать.
class Train {
private Engine engine;
private Whistle whistle;
public Train() {
// these components are part of the train and so
// are constructed when it's constructed
engine = new Engine();
whistle = new Whistle();
}
public void go() {
whistle.toot();
engine.start();
}
}
class Driver {
private Train train;
private IPod iPod;
public Driver(IPod iPod, Train train) {
// the driver may be given any ipod
// and any train to drive
this.iPod = iPod;
this.train = train;
}
public void drive() {
iPod.startMusic();
train.go();
}
}
// main method
IPod iPod = new IPodNano();
Train train = new Train();
Driver driver = new Driver(iPod, train);
driver.drive();
Теперь вы видите, как делегирование ответственности может существовать в сети связанных объектов, которые связаны друг с другом во время выполнения в несколько различных способов.
Если они не являются статическими переменными, вы не изменяете значения в классах, вы изменяете значения в экземплярах классов. –
Но если я объявляю переменную в своем классе f.e public int mValue = 0; Как я могу получить эту переменную из другого класса? –
Ну, вы не можете получить доступ к переменной из любого места, пока не создадите экземпляр класса. ('new' создает экземпляр.) –