-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathWhyVirtualMethods.cs
More file actions
40 lines (33 loc) · 996 Bytes
/
WhyVirtualMethods.cs
File metadata and controls
40 lines (33 loc) · 996 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
namespace ConsoleApp16.WhyVirtualMethods
{
//inheritance - use?-> complete code reuse
//virtual method -> Must have implemenation ,Method Open for change, subclass can /maybe reuse base class implementation or override base class implentation
public class A
{
public virtual void M1() { Console.Write("A.M1"); }
public virtual void M2() { Console.Write("A.M2"); }
}
public class B : A
{
//shadowing
public new void M1() { Console.Write("B.M1"); }
//override M2
public override void M2(){Console.Write("B.M2");}
}
public class Program
{
static void Main()
{
A obj = new A();
obj.M1();//A.M1
obj.M2();//A.M2
B b_obj = new B();
b_obj.M1();//B.M1
b_obj.M2();//B.M2
//Substitution /object Slice
obj = b_obj;
obj.M1();//A.M1
obj.M2();//B.M2
}
}
}