Undestanding Java Inheritance: strange behaviour -
Undestanding Java Inheritance: strange behaviour -
i don't understand unusual behavior of class inheritance.
this parent class:
public class cubetti implements token{ ... private int id=1; ... public cubetti(int n) { numero = n; } ... public int getid() { homecoming id; } public void setid( int idx) { id = idx; } ... } and subclass:
public class rgc extends cubetti{ private int id=0; ... public rgc (int idx) { super(0); id = idx; // unusual behaviour ! } ... } this test mainclass:
public static void main(string[] args) { rgc uno = new rgc(1); rgc due = new rgc(2); system.out.println(" uno id " + uno.getid() + " due id is" + due.getid()); } the output
uno id 1 , due id 1
but if utilize in tagged line on rgc subclass:
.... // id = idx; setid(idx); .... the output
uno id 1 , due id 2
why?
you have id variable in both cubetti super-class , rgc sub-class. using setter , getter updates/returns id of super-class, since methods defined in super-class , not overridden sub-class.
calling id = idx in sub-class constructor modifies sub-class's variable, since sub-class's variable hides super-class's variable, , if didn't hide it, wouldn't able access sub-class, since it's private.
java inheritance
Comments
Post a Comment