C#/C# Concept

[C#] new

군우 2018. 3. 19. 19:37

 키워드 new 


new 를  override 로 바꾸면  b가 출력되는데 

new를 붙인 경우 참조 대상의 객체 변수의 형에 따라 결정된다.



override는 상위클래스의 a메소드를 가리는 효과인데

new는 안가리네. 


new를 붙이면 그 변수의 형태에 따라서 결정을 다시하는 것임.


virtual은 


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
using System;
 
namespace CSStudy_newOverriding
{
    class Program
    {
        static void Main(string[] args)
        {
            A ins1 = new A();
            B ins2 = new B();
            A ins3 = new B();
 
            ins1.a();
            ins2.a();
            ins3.a();
        }
 
        class A
        {
            public virtual void a()
            {
                Console.WriteLine("class a");
            }
        }
        class B: A
        {
            public new void a() // 여기 new를 override로 바꾸면
            {           // b기츨략됨
                Console.WriteLine("class b");
            }
        }
    }
}
cs