Создание объектов в Java вопрос - PullRequest
5 голосов
/ 28 февраля 2010

В PHP для создания нового объекта вы должны сделать что-то вроде этого, $dog = new Dog;. Но в Java вы могли бы сделать что-то вроде Dog x = new Dog; или Dog x;. Может кто-нибудь объяснить, почему вы должны сказать класс Dog перед переменной?

Ответы [ 6 ]

6 голосов
/ 28 февраля 2010

Вам необходимо уточнить тип, потому что Java является strong и static типизированным языком.

Если вы объявляете x как Собака , это может быть только Собака или подкласс Собака .

Другой пример:

public class Animal {
}

public class Dog extends Animal {
}

public class Cat extends Animal {
}

Следующий код действителен, потому что x объявлен как Animal , это может быть Dog или Cat , или любой подкласс Животное :

Animal x;
x = new Dog();
x = new Cat();
5 голосов
/ 28 февраля 2010

Java статически и явно напечатано.

Тип переменной может отличаться от типа значения, которое она содержит, из-за наследования. Например:

Animal dog = new Dog();

Здесь тип переменной dog равен Animal, но значение, которое она содержит, является ссылкой на экземпляр Dog.

Теперь в некоторых других языках (C # 3 является очевидным примером в качестве ближайшего соседа Java) вы можете использовать неявно типизированные локальные переменные , когда вы действительно хотите, чтобы тип локальной переменной был таким же, как тип выражения, использованного для его инициализации:

var dog = new Dog(); // Equivalent to Dog dog = new Dog();

(Возможности вывода типов некоторых других статически типизированных языков выходят далеко за рамки этого.)

Итак, чтобы вернуться к исходному вопросу, ответ:

  • Переменная dog имеет тип, который известен во время компиляции; это не так в PHP
  • Тип переменной должен быть явно указан в Java; это связано со статической типизацией, но не является требованием статической типизации
1 голос
/ 28 февраля 2010

В Java вы бы назвали конструктор следующим образом (если он не имеет параметров):

Dog x = new Dog();

Записывая имя класса перед переменной, вы сообщаете Java, что ваша переменная x имеет тип Dog. Это позволяет Java выяснить, что вы делаете что-то не так при написании:

Dog x = new Cat();

См. Переменные PHP в w3schools :

PHP - слабо типизированный язык

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

В приведенном выше примере вы видите, что вы не нужно сообщать PHP какие данные введите переменную.

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

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

В PHP объявлена ​​переменная автоматически при использовании.

0 голосов
/ 07 июля 2016

имя вашего класса имя объекта = новое имя класса (); Например

класс Animal () {

// ваш код }

Животная собака = новая Животная ();

0 голосов
/ 28 февраля 2010

Это синтаксис Java для создания объекта класса, также называемого созданием экземпляра.

Например, Dog adog; где adog - ссылочная переменная типа Dog.

Dog adog=new Dog();, где adog - это ссылочная переменная типа Dog, которая теперь ссылается на объект Dog в памяти.

И вы используете оператор точки (.) Для доступа к переменным и методам экземпляра объекта.

0 голосов
/ 28 февраля 2010

Я думаю, это потому, что Java строго типизирован. Вам необходимо указать тип объекта во время компиляции.

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