user1480133
user1480133

Reputation: 187

What is constructor in java, if it is not a member of class?

What do we we call a constructor, if it is not a member of a class as stated in Oracle doc: http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html

Upvotes: 2

Views: 3921

Answers (6)

Saher Ahwal
Saher Ahwal

Reputation: 9237

All the doc is saying is that the constructor is not inherited by default. Since the constructor is a method that is invoked on the construction of the object in the memory heap, then once you create a subclass that inherits from a super class, the constructor of the super class is not invoked by default.

For instance if you have a class Vehicle and a subclass Car, assume the Vehicle constructor is as follows:

public Vehicle(String vehName) {
    this.vehName = vehName;
}

Then, even though your class Car inherits from class Vehicle, the vehName member (field) will not be set as the constructor above does.

So you will need to do something like this:

public Car(String vehName) {
    super(vehName);
}

Hope that helps

Upvotes: 1

John Wambura
John Wambura

Reputation: 47

In Java, a class body (the area between braces) can contain the following key items: (1) Fields (2) Methods (3) Other Classes (nested classes) (4) Constructors (5) Initializers

An object created from a particular class shall take the shape that is similar to the blueprint (class) from which it's created. Now, if you look at items that can be contained in a class body, only item (1) to (3) help in determining what sort of object can be created from a particular class definition.

Constructors and initializers only play part in actual creation of the object (e.g. initialization of already defined fields), but do not determine what shape/state that object shall carry, and what behaviors it will display.

For this reason, to me, it make sense to call item (1) to (3) class members (i.e. class members are those items within a class body that determine how an object created from the class looks like and behave); whereas constructors and initializers are not members because their absence in a class definition does not affect a class state and behavior.

As such, only class members can be inherited as the whole point behind inheritance is to enable a subclass reuse state and behavior of its superclass.

Upvotes: 0

Akshay Lodha
Akshay Lodha

Reputation: 1

Constructor is a method which name is same as the class. It is used to initialize the object of class. It's implicit in action. Parametric constructor initialize object with different value.

Upvotes: -1

Aniket Inge
Aniket Inge

Reputation: 25705

Its a special method that every class has, which is called after creation of the object. in JVM its called using invokespecial so, lets just call it a special method?

And since there is just 1 special method in Java - they all call it "constructor"

Upvotes: 3

Ted Hopp
Ted Hopp

Reputation: 234807

I think the term "member" was defined to exclude constructors for the sake of convenience. Constructors, even public ones, are not inherited; members are inherited (unless they are static and/or private). It would be awkward when talking about the rules of inheritance to always have to say "members except constructors".

From the Java Language Specification, §8.2:

Constructors, static initializers, and instance initializers are not members and therefore are not inherited.

Just call constructors "constructors".

Upvotes: 6

democidist
democidist

Reputation: 105

A Constructor is a method which is in a class which is used to create a new instance of that class. Being a member of a class just means that the item in question is in the class.

Upvotes: -1

Related Questions