Создание класса, условия toString - PullRequest
0 голосов
/ 19 января 2012

У меня есть два класса:

import android.cla;
public class CW {

public static void main(String [] args){
    System.out.println(new cla());
 }
}

public class Cl {
   @Override
   public String toString(){
      return "LOL";
   }
}

В первом классе я вызываю метод toString() объектов, который был переопределен , и печатаю его на консоли. Это ясно возвращает "LOL";

У меня есть два вопроса:

  • Можно ли возвращать данные при создании экземпляра , как этот (new cla()), без переопределения объекта toString() метод; и

  • Каков правильный термин для создания классов, подобных этому (new cla()), без объявления, например: Object l = new cla()

Спасибо. Пожалуйста, поправьте меня на правильных условиях.

1 Ответ

3 голосов
/ 19 января 2012

1 - Нет, это не так.«Конструктор» - это специальный метод класса, который всегда возвращает экземпляр объекта класса.Весь смысл конструктора в том, чтобы вернуть объект.Так что нет, он больше ничего не может вернуть.

1a - Причина, по которой System.out.println вызывает метод toString, заключается в том, что вы просите его распечатать этот объект на экране, а toString метод - это метод, выбранный авторами println (и языка Java в целом) для представления строкового представления объекта.

2 - этот способ написания на самом деле не называется ничем.Это просто выражение, которое вы передаете как «фактический параметр» методу println.Правда, это выражение, которое создает новый объект, но оно ничем не отличается от println("a string").Вы могли бы назвать это анонимным объектом, если бы вы действительно этого хотели.

2a - ( старый ответ, который фактически не отвечает на ваш вопрос, но я оставлю его здесь ) Это просто называется 'используя менее производную ссылку † на класс ».Остерегайтесь, вы можете вызывать методы только для типа ссылки, поэтому, если вы добавили дополнительные методы в класс Cl, вы не сможете вызывать их из ссылки Object.Изучите принцип подстановки Лискова .

† «менее производный», «супертип», «суперкласс» или «более общий класс» и т. Д. *

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