I have the following simple C# code, but I do not understand the output.
using System; namespace ConsoleApplication4 { class myParent { public int id = 3; private string name = "Parent class private string"; public void mymethod() { Console.WriteLine("{0} & {1}", name, id); } } class myChild : myParent { private string name = "Child class private string"; } class Program { static void Main(string[] args) { myChild c1 = new myChild(); c1.mymethod(); Console.ReadLine(); } //Output //Parent class private string & 3 } } When I invoke c1.mymethod(), why is string name in the myParent class used instead of string name in myChild class since I am invoking a method on myChild object which has a defined string name variable?
I used to believe that inheritance means simply virtually copying and pasting code from a base class to a derived class to reuse code or save key stroke. But after some research, this doesn't seem to be the case. Invoking a inherited method somehow references the base class, which might explains the output in my code.
However, I am still not clear about the inner working of inheritance. For example, I never created an instance of the base class. How should the base class method ( myParent.mymethod() ) exit?
Please help clarity my confusion and point me to some documentations.
privateor not.