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

Basic Question.

Suresh Rajadurai
Ranch Hand

Joined: Feb 22, 2007
Posts: 58
Hi,

The following question was in a mock paper. Could you please tell me why it is ending in compilation error? The error says:

TestAll.java: 5: cannot find symbol
symbol : constructor TestSuper()
location: class TestSuper
class TestSub extends TestSuper{ }




class TestSuper
{
TestSuper(int i) { }
}
class TestSub extends TestSuper{ }
class TestAll
{
public static void main (String [] args)
{
new TestSub();
}
}
Jesper de Jong
Java Cowboy
Saloon Keeper

Joined: Aug 16, 2005
Posts: 14156
    
  19

This question has to do with the following rule.

Java Language Specification section 8.8.9:
If a class contains no constructor declarations, then a default constructor that takes no parameters is automatically provided:
  • If the class being declared is the primordial class Object, then the default constructor has an empty body.
  • Otherwise, the default constructor takes no parameters and simply invokes the superclass constructor with no arguments.

  • A compile-time error occurs if a default constructor is provided by the compiler but the superclass does not have an accessible constructor that takes no arguments.

    Now, let's look at your example.

    Your class TestSuper has a constructor that takes an int. The compiler will not automatically add a default constructor to class TestSuper, because there is already a constructor in the class.

    Your class TestSub does not have a constructor declaration. So the compiler will automatically add a default constructor to class TestSub, which will invoke TestSuper's no-args constructor.

    The problem is in that last part: class TestSuper doesn't have a no-args constructor, so you get an an error.
    [ August 19, 2007: Message edited by: Jesper Young ]

    Java Beginners FAQ - JavaRanch SCJP FAQ - The Java Tutorial - Java SE 7 API documentation
    Scala Notes - My blog about Scala
    Suresh Rajadurai
    Ranch Hand

    Joined: Feb 22, 2007
    Posts: 58
    Hi Jasper,

    Thank you so much. I really got the exact picture of the problem. I appreciate your reply. Thank you once again.

    Suresh
     
    I agree. Here's the link: http://aspose.com/file-tools
     
    subject: Basic Question.