2016-12-14 2 views
1

Является ли объект создан каждый раз, когда конструктор вызывается в java? Здесь класс Apple наследуется от объекта Fruit.Apple. Как он наследует от Fruits, конструктор Fruit вызывается (цепочка конструктора). Это означает, что объект Fruit был инициализирован.Создается ли объект каждый раз при вызове конструктора в java?

Но вывод предполагает, что создан только один объект, объект Apple. Имеет тот же hashcode.

Может кто-нибудь объяснить?. Я ожидал, что там будут 2 объекта. Первый объект Fruit должен был быть инициализирован, а затем объект apple.

программа // Java, чтобы показать, что оба супер класса // и подкласса конструкторы относятся к тому же объекту

// super class 
class Fruit 
{ 
    public Fruit() 
    { 
     System.out.println("Super class constructor"); 
     System.out.println("Super class object hashcode :" + 
          this.hashCode()); 
     System.out.println(this.getClass().getName()); 
    } 
} 

// sub class 
class Apple extends Fruit 
{ 
    public Apple() 
    { 
     System.out.println("Subclass constructor invoked"); 
     System.out.println("Sub class object hashcode :" + 
          this.hashCode()); 
     System.out.println(this.hashCode() + " " + 
          super.hashCode()); 

     System.out.println(this.getClass().getName() + " " + 
          super.getClass().getName()); 
    } 
} 

// driver class 
public class Test 
{ 
    public static void main(String[] args) 
    { 
     Apple myApple = new Apple(); 
    } 
} 

Output 
Super class constructor 
Super class object hashcode :366712642 
Apple 
Subclass constructor invoked 
Sub class object hashcode :366712642 
366712642 366712642 
Apple Apple 
+1

Возможный дубликат [Inheritance in Java - создание объекта подкласса вызывает также конструктор суперкласса. Почему именно?] (Http://stackoverflow.com/questions/488727/inheritance-in-java-creating-an-object-of-the-club-invokes-also-the-constr) – DVarga

ответ

1

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

При создании объекта Apple с new Apple() создается один объект. Инициализация свойств этого объекта включает выполнение нескольких конструкторов (Apple, Fruit и Object).

0

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

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