Can you achieve Runtime Polymorphism by data members
Answer: Yes. When you declare data member on parent class then you don’t need to redefine it on child class data member’s value will get resolved to overridden value in actual object type just use or change its value based on your requirement as shown below:
package com.javahonk.polymorphism; public class FirstStep { int x = 1; public int getX() { return x; } }
package com.javahonk.polymorphism; public class SecondStep extends FirstStep{ SecondStep() { x = 2; } }
package com.javahonk.polymorphism; public class ThirdStep extends SecondStep{ ThirdStep () { x = 3; } }
package com.javahonk.polymorphism; public class DataMemberPolymorphismTest { public static void main(String[] args) { FirstStep[] firstSteps = { new FirstStep(), new SecondStep(), new ThirdStep() }; System.out.println("Data Member Polymorphism results: "); for (int i = 0; i < firstSteps.length; i++) System.out.println(firstSteps[i].getX()); } }
Output:
The Original Parent Member value is not changed, still the same after the child.
Data Member Polymorphism results:
1
2
3
get now x from FirstStep: 1
for (int i = 0; i < stepsInSequence.length; i++)
{
System.out.println(stepsInSequence[i].getX());
}
System.out.println("get now x from FirstStep: " + stepsInSequence[0].x);