File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Beginning Java and the fly likes Constructor Declaration Confusion Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Constructor Declaration Confusion" Watch "Constructor Declaration Confusion" New topic

Constructor Declaration Confusion


Joined: Apr 08, 2001
Posts: 8
When you mix a constructor declaration what are you really doing and why do
you do this?
Class2 extends Class1
public static void main(String args[ ])
Class1 c1 = new Class2( ) //why do you mix the constructor declaration?
Class2 c2 = new Class1( ) //why do you mix the constructor declaration?
Is this object reference conversion and casting?
Thanks in Advance!
sanjays samadder

Joined: Mar 30, 2001
Posts: 24
hi what happens when you extend a class to another?
it gives a call to the default constructor of the super class.
here when you write class1 extends class2
it means that class1 has greater information than class2
that is just like a situation as with a float and an integer
a float is bigger thyan an integer.
here class1 is like a float but it is not excatly like primitive data conversion.class1 only has an outside reference to class2
the rule is
you can have a super class reference holding a sub class object the vice verca is not true.
why we do it?

look up the topic of Dynamic Method Despatch.
Thinking in java by bruce ekel will help
Randall Twede
Ranch Hand

Joined: Oct 21, 2000
Posts: 4351

I hate to say this but, your name does not comply with the Javaranch naming guidelines which can be found at
please register again with a valid name.

Visit my download page
Cindy Glass
"The Hood"

Joined: Sep 29, 2000
Posts: 8521
Since Class2 extends Class1, Class2 is a particular sub-set or type of Class1.
When you say
Class1 c1 = new Class2();
You are saying "make a variable that can hold any type of Class1, then create a particular sub-set of Class1 (in this case Class2) and put it in that variable".
From an OO point of view this is considered good form because it allows you to make changes later (like using Class3, another sub-set of Class1 instead) to what you put in the variable without having to worry about everyplace that variable is used. If you had made the variable a Class2 some of the uses of it might not handle a Class3 without modifications. But since you used a Class1 and BOTH cases fit into it - all is good.
The second example you show of course will not work.
All squares are rectangles but not all rectangles are squares.
All Class2's are Class1's but not all Class1's are Class2's.

"JavaRanch, where the deer and the Certified play" - David O'Meara
I agree. Here's the link:
subject: Constructor Declaration Confusion
jQuery in Action, 3rd edition