Довольно простой вопрос конструктора, который я просто не могу получить.Джава - PullRequest
0 голосов
/ 16 июня 2011
  • Создайте класс с конструктором по умолчанию (тот, который не принимает аргументов), который печатает сообщение.В вашем методе main () создайте объект этого класса.
  • Добавьте перегруженный конструктор в код из шага 1. Новый конструктор должен принять аргумент String и распечатать его вместе с вашим сообщением.Измените main () так, чтобы он создавал второй объект этого класса, используя новый конструктор.

Итак, вторая часть буквально написана для меня на другом языке, я абсолютно не знаю, как это сделать, и первая часть вот что я получил:

public class Constructors {
    System.out.println("Message");
    public static void main(String[] args) {
    }
}

Это дает мне ошибку, когда я просто пытаюсь напечатать это сообщение.Я так растерялся, я не прошу вас делать мою лабораторию для меня каким-либо образом, но я так растерялся, что это вышло из-под контроля.

Ответы [ 2 ]

2 голосов
/ 16 июня 2011

Конструктор не должен быть именем вашего класса, конструктор - это метод, который создает экземпляр вашего класса (объекта)

Итак, первая точка означает, что вы создаете объект без параметров, которые будутвыведите сообщение, когда вы вызываете его из метода main

public class WhateverClass{

    //this is the first constructor
    public WhateverClass(){

        System.out.prinln("A message");

    }

    //this is the main method
    public static void main (String[] args){
        new WhateverClass(); //will print the message
    }
}

Затем вы создадите другой конструктор, который будет перегружать первый, потому что у него будет та же сигнатура, за исключением того, что он будет принимать параметр.И тогда вы вызываете его из основного метода точно так же, как первый.Здесь:

public class WhateverClass{

    //this is the first constructor
    public WhateverClass(){

        System.out.prinln("A message");

    }

    //this is the second constructor
    public WhateverClass(String message){

        System.out.prinln(message);

    }

    //this is the main method
    public static void main (String[] args){
        new WhateverClass(); //will print the message
        new WhateverClass("A message");
    }
}

И ваш пример не работает, потому что ваш метод печати не в каком-либо методе и не может быть выполнен там, где он есть.

Вы должны действительно прочитать книги и статьи оосновы ОО-программирования.

2 голосов
/ 16 июня 2011

Вызов метода должен быть либо частью тела метода, либо выражением или блоком инициализатора. Переместите этот вызов println в фактический конструктор (Google google), и все будет хорошо. Вы можете перейти к теме " Starting Java (my sticky thread)", предназначенной для начинающих (не стесняйтесь предлагать предложения).

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

...