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