Friday, 15 June 2012

inheritance - In java , can we pass superclass Object to subclass reference? -



inheritance - In java , can we pass superclass Object to subclass reference? -

in java, can pass superclass object subclass reference ?

i know weird question/practically not viable, want understand logic behind why not allowed in java.

class employee { public void met1(){ system.out.println("met1"); } } class salesperson extends employee { @override public void met1(){ system.out.println("new met1"); } public void met2(){ system.out.println("met2"); } } public class referencetest { public static void main(string[] args) { salesperson sales = new employee(); // line 1 sales.met1(); // line 2 sales.met2(); // line 3 } }

what have happened if java allowed compilation of line 1? problem arise?

any inputs/link welcomes.

if salesperson sales = new employee(); statement allowed compile, have broken principles of polymorphism, 1 of features language has.

also, should familiar compile time type , runtime type mean:

the compile-time type of variable type declared as, while runtime type type of actual object variable points to. example:

employee sales = new salesperson();

the compile-time type of sales employee, , runtime type salesperson. compile-time type defines methods can called, while runtime type defines happens during actual call.

let's suppose moment statement valid:

salesperson sales = new employee();

as said, compile-time type defines methods can called, met2() have been eligible calling. meanwhile, employee class doesn't have met2() , actual phone call have been impossible.

java inheritance reference polymorphism

No comments:

Post a Comment