Каждый объект в Java имеет свой собственный конструктор? - PullRequest
0 голосов
/ 23 сентября 2011

Этот вопрос из-за этой строки, которую я прочитал Новый экземпляр объекта создается путем вызова метода конструктора. Я согласен, но метод конструктора чего ..?OObject или сам класс ...? .. Извините, если это любительский вопрос, но я все еще изучаю java, и мне трудно его понять.

, и это напомнило мне о том, что это первая курица илиegg ..?

EDIT:

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

Ответы [ 7 ]

5 голосов
/ 23 сентября 2011

В объектно-ориентированном дизайне конструктор - это то, что создает объект из определения вашего класса ...

2 ключевых понятия здесь

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

  • Объект - Созданная конструктором установленная версия Class для практического использования.

Пример используемого конструктора

public class MyClass {

    public int intProperty;

    // This is the Constructor, Notice it shares a name with the Class
    public MyClass(int value) {
        intProperty = value;
    }
}

Теперь использовать класс

//                            |----------This is calling the constructor
//                            |          and placing a new MyClass object
//                            v          in myClassObejct
MyClass myClassObject = new MyClass(3);

myClassObject.intProperty; // 3

Создается новый MyClass Объект

Java не работает без классов и конструкторов, это ядро ​​шаблона проектирования языка ...

Только классы имеют конструкторы, Объекты являются продуктом Конструкторы , сам объект не содержит конструктора.

2 голосов
/ 23 сентября 2011

Да, у каждого класса есть конструктор.

Если вы явно не определите его, Java создаст для вас пустой по умолчанию.

2 голосов
/ 23 сентября 2011

Да, вы вызываете конструктор класса:

MyClass instance = new MyClass();

, но обратите внимание, что некоторые объекты имеют специальные конструкторы, разрешенные языком, например String:

String x = "foobar";

Оченьаналогично (но не совсем так):

String x = new String("foobar");

Обратите внимание, что если для класса не определены конструкторы, подразумевается конструктор по умолчанию (без аргументов).

1 голос
/ 23 сентября 2011

Каждый объект в Java должен быть создан с помощью конструктора некоторого класса, за исключением нескольких примитивных классов, таких как String, которые имеют специальные правила размещения. Даже на самом базовом уровне вы всегда можете позвонить

Object o = new Object();

и поскольку все объекты в Java наследуются от суперкласса Object, большинство объектов наследуют конструктор по умолчанию.

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

class MyClass
{
    private MyClass()
    {
        //cannot be called by outside classes
    }
}

В общем, это используется либо для чисто статических классов (которым не нужны экземпляры), либо для объектов Singleton (которые хотят ограничить создание экземпляров) Поэтому все объекты создаются из некоторого конструктора, но не все классы обязательно имеют пригодный для использования конструктор.

1 голос
/ 23 сентября 2011

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

1 голос
/ 23 сентября 2011

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

пример:

Integer i = new Integer("1");
//i is the object, and the Integer class constructor gets called
0 голосов
/ 28 августа 2013

Оператор «Новый экземпляр объекта создается путем вызова метода конструктора» является неверным оператором и вызывает путаницу. Там нет такого понятия, как экземпляр объекта. Объект является экземпляром класса. Следующие 2 утверждения действительны:

Объект создается путем вызова метода конструктора.

Экземпляр класса (то есть объект) создается путем вызова метода конструктора.

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