basic java code to understand inheritance -
why system.out.println(b.h + " " + b.geth()); prints following:
beta 44 <br/> 4 44 (notice in second line) i expecting print this:
4 beta 44 44 (this 1 in 1 line) the reason why thought print way because call b.h first 4.then call b.geth() print beta 44 44
here code:
class baap{ int h = 4; public int geth(){ system.out.println("beta " + h); return h; } } class beta extends baap{ int h = 44; public int geth(){ system.out.println("beta " + h); return h; } public static void main (string [] args) { baap b = new beta(); system.out.println(b.h + " " + b.geth()); } }
first, call geth() prints "beta 44", since argument of system.out.println(b.h + " " + b.geth()) evaluated before println called.
then system.out.println(b.h + " " + b.geth()) prints "4 44".
b.h returns 4 because there no overriding instance variables, , since b's compile time type baap, b.h returns instance variable of super class.
b.geth() returns 44 because b's runtime type beta, overrides geth().
Comments
Post a Comment