Примеры компоновки Java - PullRequest
0 голосов
/ 17 апреля 2019

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

class Pc {
Monitor monitor;

public Pc(Monitor monitor) {
    this.monitor = monitor;
}

void drawLogo() {
    monitor.drawPixelAt();
}

}


class Monitor {
void drawPixelAt() {
    System.out.println("Drawing pixel ");
}

}

public class Main {

public static void main(String[] args) {

    Pc pc = new Pc(new Monitor());
    pc.drawLogo();
}
}

второй пример

class Pc {
Monitor monitor;

void drawLogo() {
    monitor.drawPixelAt();
}

}


class Monitor {
void drawPixelAt() {
    System.out.println("Drawing pixel ");
}
}

public class Main {

public static void main(String[] args) {

    Pc pc = new Pc();
    pc.drawLogo();
}
}

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Во втором примере вы никогда не инициализируете переменную «monitor», в первом вы инициализируете переменную «monitor» в конструкторе ПК

0 голосов
/ 17 апреля 2019

Монитор должен быть конструктором вашего ПК, во первых он есть, и все хорошо, а во втором вообще нет монитора. Классу ПК нужен монитор, потому что он объявлен как конструктор.

Как сказано в одном из комментариев, поскольку там ничего нет, вы получите исключение нулевого указателя.

...