aspose file tools*
The moose likes Beginning Java and the fly likes Simple inheritance question Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Simple inheritance question" Watch "Simple inheritance question" New topic
Author

Simple inheritance question

Leonard Brandeis
Greenhorn

Joined: Sep 25, 2009
Posts: 8
When writing a child class such as:
,

I was unable to compile the child class unless I created a constructor for the child class. Is this always the case? I thought it would just use the parent's constructor.
Henry Wong
author
Sheriff

Joined: Sep 28, 2004
Posts: 19073
    
  40

Leonard Brandeis wrote:
I was unable to compile the child class unless I created a constructor for the child class. Is this always the case? I thought it would just use the parent's constructor.


If your child class doesn't have a constructor, Java will create a no-arg constructor that will call the parent's no-arg constructor. If your parent class doesn't have a no-arg constructor, then yes, you will have to create a constructor, in the child class, that calls the correct parent constructor.

Henry


Books: Java Threads, 3rd Edition, Jini in a Nutshell, and Java Gems (contributor)
s.palanivel rajan
Ranch Hand

Joined: Sep 22, 2009
Posts: 41
whenever you want to use a child class.. you have to add this lie in your child class..

"parentclassname objectname= new parentclassname();"

that is you have to create one object for parent class within the child class.

if parentclass=a
child class=b

then

class a
{
}
class b extends a
{
a a1=new a();
}


With Regards,
S.Palanivel Rajan B.E.
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 40052
    
  28
s.palanivel rajan wrote:whenever you want to use a child class.. you have to add this line in your child class..

"parentclassname objectname= new parentclassname();"
Where? I have never seen that. That looks mistaken, I am afraid.
Ruben Guillen
Greenhorn

Joined: Sep 02, 2009
Posts: 28
Hello Leonard

The only cause of compilation error I could think of on your example is that Class Parent is implementing a not default constructor. Then the compiler will not create a default constructor for you Class Child because is expecting you to provide explicitly the implementation for all constructor defined at Parent class level that do not have the default constructor signature for the class.

Compilation Error: Implicit super constructor Parent() is undefined for default constructor. Must define an explicit constructor



Works: Example 1


Works: Example 2


SCJP, OCMJD
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 40052
    
  28
Java™ Tutorials. Look at the bits about "super" particularly.
Ruben Guillen
Greenhorn

Joined: Sep 02, 2009
Posts: 28
Another important point.

1) Only instance methods are inherited.

2) Never inherited, but shadowed are instance and static variables, static method, constructors.

Regards.
Jesper de Jong
Java Cowboy
Saloon Keeper

Joined: Aug 16, 2005
Posts: 14435
    
  23

Leonard Brandeis wrote:When writing a child class such as:


Note that "inheritance" in object oriented programming has a different meaning than in biology. If you create a class "child" that extends class "parent", you're using the biological meaning of the word "inheritance", which doesn't translate to OO programming.

In object oriented programming, inheritance implies an is-a relation between the subclass and the superclass. When you apply this to your example, what you're saying with that line of code is:

A child is a parent.

But as you see, that's nonsense - a child is not a parent. And subclasses are not "children" of their superclasses - we don't call subclasses "child classes". It's better to use other class names if you're talking about inheritance in object oriented programming. For example, call your superclass "Animal" and your subclass "Dog". A Dog is an Animal.


Java Beginners FAQ - JavaRanch SCJP FAQ - The Java Tutorial - Java SE 8 API documentation
Henry Wong
author
Sheriff

Joined: Sep 28, 2004
Posts: 19073
    
  40

2) Never inherited, but shadowed are instance and static variables, static method, constructors.


Another item not inherited are instance methods, where the subclass doesn't have access rights to the superclass' version of that method.

1. If the superclass instance method is private.
2. If the superclass instance method has default access, and the subclass is in a different package.

Henry
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Simple inheritance question