-1

I am extending the API of a class that I am working on and would like to make it backward compatible - so that it doesn't break any existing users of the class. I have created the new functionality by adding a new parameter to the constructor.

So that I don't repeat code (I could copy-paste code from the old constructor into the new) I would like to change the existing constructor to call the new constructor passing 0 as the default for the new parameter but I am getting a compilation error, method call expected.

Is what I am trying to do not possible (method overloading is not supported?) or am missing something?

To help show what I mean, please see the simple example below,

public abstract class AbstractCalculator {

     int result;

     // new parameter being added 
     public AbstractCalculator(int a, int b){
         result = a + b;
     }

     // existing functionality       
     public AbstractCalculator(int a){
         //compilation error here - Method call expected
         AbstractCalculator(a, 0);
     }
}
public class Calculator extends AbstractCalculator{

     public Calculator(int a){
         super(a);
     }

     public static void main(String args []){

         Calculator calc = new Calculator(4);
         System.out.println(calc.getResult());

     }    
}
Dushyant Tankariya
  • 1,432
  • 3
  • 11
  • 17
robbie70
  • 1,515
  • 4
  • 21
  • 30

1 Answers1

2
// existing functionality       
public AbstractCalculator(int a){
    this(a, 0);
}
Maurice Perry
  • 9,261
  • 2
  • 12
  • 24