본문 바로가기

[ programing ]/C#

virtual 키워드, 메소드 숨기기






* 상위 클래스하위클래스가 override 해야할 메소드virtual로 한정!



class Animal

{

public virtual void Initialize()

{

Console.WriteLine("Animal");

}

}



class Cat:Animal

{

public override void initialize()

{

base.initialize();

             Console.WriteLine("cat");

}

}


*고양이는 동물카테고리에 속하기 때문에 동물 속성두 필요합니다. 그래서 base.initialize(); 를 호출합니다.

*private로 선언한 메서드는 오버라이딩 할수 없습니다.










*메소드 숨기기

CLR에게 기반클래스에서 구현된 버전의 메소드를 감추고 파생 클래스에서 구현된 버전만을 보여주는 것! 

- 메소드 숨기기는 파생클래스 버전의 메소드를 new한정자로 수식함.





class Base

{

public void Method()

{

Console.WriteLine("Base.Method()");

}

}




class Derived:Base

{

public new void Method()

{

Console.WriteLine("Derived.Method()");

}

}





* 부모클래스를 상속받은 "Derived" 자식클래스

* 메소드 숨기기는 파생클래스 버전의 메소드를 new한정자로 수식함.