Передача и возвращение объекта класса без «нового» ключевого слова - PullRequest
0 голосов
/ 25 ноября 2018

Я новичок в Java, читаю некоторые вопросы, связанные с передачей класса и возвращением класса в ООП Java, но, к сожалению, не могу найти ответ.Поэтому я поднимаю свои вопросы, надеюсь, что вы, ребята, не стесняйтесь делиться своими идеями.

Допустим, у нас есть кодовый блок о Композиции "у случая есть что-то определенное измерение в классе" измерение ":

public class Case {
private String model;
private Dimensions dimensions;

public Case(String model, Dimensions dimensions) {   // line AAA
    this.model = model;
    this.dimensions = dimensions;
}

public Dimensions getDimensions() { 
    return dimensions; //line BBB

Вопрос1 : в строке AAA мы передаем «Измерения измерений» в конструктор в качестве параметра, поэтому не используем ключевое слово «new» для объекта экземпляра

Вопрос2: в строке BBB мы возвращаем «размеры», поэтому для возврата объекта не используем «return new Dimensions». В некоторых статьях я вижу, что они используют. Итак, какую ситуацию нам следует использовать«новый», а какой не стоит?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 25 ноября 2018

Вопрос1: в строке AAA мы передаем «Измерения измерений» в конструктор в качестве параметра, почему бы не использовать ключевое слово «new» для объекта экземпляра

Как правило, вы быпередать уже созданный объект, как показано:

String model = "myModel";
Dimensions dim = new Dimensions(); 
Case case = new Case(model, dim);

Так что теперь переменная размеров объекта case будет содержать ссылку на объект измерения, переданный через конструктор.

Вопрос2: в строке BBB мы возвращаем «размеры», поэтому не используем «вернуть новые измерения» для возврата объекта.В некоторых статьях я вижу, что они используют.ТАК, в какой ситуации мы должны использовать «новый», а какие - нет?

Метод getDimensions() - это метод получения, означающий, что мы хотим получить значение this измерения объектов.Поэтому возвращать новый объект измерения не имеет смысла.Чтобы получить размер объекта case, созданного выше, вы должны использовать:

Dimensions caseDimension = case.getDimensions();
0 голосов
/ 25 ноября 2018

Я хотел бы добавить ответ на ваш подвопрос: В некоторых статьях я вижу, что они используют. .

Предположим, у вас есть метод в вашем Case, которыйцель каким-то образом изменить размеры и вернуть его, например public Dimensions stretch().В этом случае вы можете использовать return new Dimensions();

public Dimensions stretch(//some arguments){
    this.dimensions = new Dimensions(//args);
    return dimensions;
}
0 голосов
/ 25 ноября 2018

Экземпляр Dimensions в вашем примере создан вне класса Case.

Например, возможное использование класса может быть:

Dimensions dim = new Dimensions ();
Case c = new Case ("something", dim);

и более поздними

Dimensions d = c.getDimensions();

Как видите, мы передаем ссылку на объект Dimensions в конструктор Case.Конструктор Case сохраняет эту ссылку в переменной экземпляра (dimensions), и позже мы можем вызвать метод getDimensions(), чтобы получить эту ссылку.

Ключевое слово new используется только тогда, когдаВы хотите создать новый объект класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...