Java Programming - Declarations and Access Control - Discussion

Discussion Forum : Declarations and Access Control - Finding the output (Q.No. 3)
3.
What will be the output of the program?
public class A
{ 
    void A() /* Line 3 */
    {
        System.out.println("Class A"); 
    } 
    public static void main(String[] args) 
    { 
        new A(); 
    } 
}
Class A
Compilation fails.
An exception is thrown at line 3.
The code executes with no output.
Answer: Option
Explanation:

Option D is correct. The specification at line 3 is for a method and not a constructor and this method is never called therefore there is no output. The constructor that is called is the default constructor.

Discussion:
15 comments Page 1 of 2.

Abhijit Saha said:   1 decade ago
I have a doubt in Java. In c++, only the constructor name is the same as the class name. i.e., C++ does not allow any other member functions can have the name same as the class name and also the constructor returns no value.

But in Java, we can have a method name same as the class name even though it is not a constructor. i.e.,

class myClass
{
void myClass() // constructor
{
}
int myClass() // not a construcor, but java allows it , why?
{
}
}

Ayylmao said:   8 years ago
This is easy, get the constructor basics right first.

Like everyone said a constructor doesn't have a return type.
Therefore void A(){//code}, int A(){//code}, float A(){//code} ,etc. are all methods where as,
A(){//code} is a constructor

Therefore in the given code, just remove 'void' and i'll become a constructor and print "Class A" otherwise it won't do anything.
(1)

Amaz said:   1 decade ago
void myClass is not constructor my dear friend,first of all we must know constructor are the speacial method in java which has the exact same name as the class,and must not have a return type,here in abhijeet's question void myClass() is not a constructor because its having return type that is void,so java compiler won't deal it as a constructor.

Ishu said:   8 years ago
Constructor don't have return type and in this problem there is return type which is void A() so this is a method and int his very question method name is also with same name as class so block will not execute.

Sandeep Tomar said:   1 decade ago
If we are allowed to have method with same name. How Compiler will come to know whether we have written a valid function code or a wrong constructor code. Please help to clarify on this. Thanks.

Aqueenni said:   9 years ago
As per my knowledge, method name starts with a lowercase.

Here it is void A().

So one can also think that it is a constructor declared wrongly and hence the option B. Compilation fails.

Muthu said:   1 decade ago
In java Constructor doesn't have return type right. Then how is it possible?

public class A
{
void A() /* Line 3 */
{
System.out.println("Class A");
}

Alexandre said:   8 years ago
For me, the answer is "B" Compilations fails, because the compiler by Eclipse gives me this message (before compile, I can't compile).

"This method has a constructor name".
(1)

Sridevi.s said:   1 decade ago
In Abhijit Saha's example, void myclass is a constructor to class myclass then,
Why void A is not a constructor to class A?

can anyone clarify with clear examples?

Pramod pai said:   1 decade ago
Constructor can only initialize like:

void A(int a)
{
this.a=a;
}

Where as method will have statements:

void A
{
print...(bla bla bla);

}

Hope you're clear.


Post your comments here:

Your comments will be displayed after verification.