//=================================================================// class AClass { // MAIN PROGRAM // What's the output of this program public static void main( String[] args) { BClass b = new BClass(); AClass a = new AClass(3); System.out.println("Result of a.F1(5) = "+a.F1(5)+" and a.F2(b, 5) = "+a.F2(b, 5)); ASubClass asub = new ASubClass(); System.out.println("Result of asub.F1(5) = "+asub.F1(5)+" and asub.F2(b, 5) = "+asub.F2(b, 5)); } // ========================== SuperClass ==========================// int f; AClass(int f){ this.f = f; } int F1(int x){ return f * x; } int F2(BClass bObject, int x){ return f * bObject.F(x); } } //========================== SubClass =============================// class ASubClass extends AClass{ ASubClass(){ super(4); } int F2(BClass bObject, int x){ return bObject.F(f) * x; } } //========================== ClassB =============================// class BClass { public BClass(){ } int F(int x) { return x + 2; } }