Home >Java >javaTutorial >Can Abstract Classes Have Constructors and How Are They Used?
Can an abstract class have a constructor?
Yes, abstract classes can have constructors. Constructors in abstract classes allow for the initialization of common fields and enforcement of class invariants across its subclasses.
How can constructors be used in abstract classes?
Consider the example below:
abstract class Product { int multiplyBy; public Product(int multiplyBy) { this.multiplyBy = multiplyBy; } public int multiply(int val) { return multiplyBy * val; } } class TimesTwo extends Product { public TimesTwo() { super(2); } } class TimesWhat extends Product { public TimesWhat(int what) { super(what); } }
Here, the abstract class Product defines a constructor that initializes the multiplyBy field. The concrete classes TimesTwo and TimesWhat inherit this constructor and provide specific implementations or values for multiplyBy.
Purpose of Constructors in Abstract Classes:
Note: Abstract classes can have default (no-arg) constructors only if all the instance variables are final. However, it's best practice to explicitly provide a constructor in an abstract class to enforce initialization requirements in subclasses.
The above is the detailed content of Can Abstract Classes Have Constructors and How Are They Used?. For more information, please follow other related articles on the PHP Chinese website!