inheritance - Java implementation of this - calling a Parent class method to utilizing Child class data member -
this question regarding implementation decision of super , this in java. consider,
parent class contains variable name , method getname()
public class parent { protected string name = "parent"; protected string getname(){ return this.name; } } and child class inherits parent class has own name variable
public class child extends parent { protected string name = "child"; protected void printnames() { system.out.println("parent: " + super.getname()); system.out.println("child: " + this.getname()); } public static void main(string[] args) { child c = new child(); c.printnames(); } } output:
parent: parent child: parent from output, can see that: when method getname() invoked child class super context, returns "parent", when invoked this context, again returns "parent"
if method present in parent class, data members same access modifier present in both,
why shouldn't this.getname() child class return "child" because is-a parent has getname() method
update question not how "child" printed or overriding, implementation decision of this core java team, , intended them.
fields not overridable methods are, fields can hidden or not. this refers current object of type parent in method parent#getname() such value of variable name defined in parent or potentially parent class not in sub class child.
here simple code snippet shows idea:
child child = new child(); // show variable name of class child system.out.println(child.name); // show variable name of class parent this.name // in getname method system.out.println(((parent)child).name); output:
child parent
Comments
Post a Comment