Pages

Sunday, May 1, 2011

Abstract Classes Have Constructors in decompiled code

1) In Java , we have default constructors provided for classes by the compiler (in case one is not declared).

2) The abstract classes can't be instantiated by using the new operator because they don't provide full implementation of all the methods.

Then does it make sense to have constructors inside abstract classes. Let us find it using a sample abstract class:

publicabstractclassTest{

publicabstractvoiddoSomething();

}

The decompiled code for this class will show the truth about constructors in abstract classes in Java

publicabstractclassTest

{

publicTest()

{

}

publicabstractvoiddoSomething();

}

Why?

The reason is that when a class extends any other class and an instance of the subclass is created then the constructor calls are chained and the super class constructors are invoked. This rule is no exception for abstract class

Moreover, having constructors in a class doesn't necessarily mean that instance of that class will be created using the new operator, but the constructors are intended for writing any initializing code.

Disclaimer

Java Jazzle is for learning and training only. Its not guaranteed that content published is correct. The risk from using it lies entirely with the user. Also the opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

About this blog

This is my tech blog. I write on this blog to save my searching stuff on google. It acts as my log of all the stuff I went through and saves my time, because I don't have to search again and again. Another reason for putting stuff on it was, when I am kind of free, it kind of kills it.