티스토리 뷰
부모 클래스를 상속한 자식 클래스에서, 부모 클래스에 존재하는 변수명/함수명과 같은 변수/함수를 선언하고
외부가 아닌 자식 인스턴스 내부에서 그 변수/함수를 호출할 때, 부모 쪽이 아닌 자식 쪽의 멤버에 접근하도록 해주는 한정자.
new 한정자를 붙여주지 않아도 자식의 멤버부터 확인을 하므로 문제는 없지만, 컴파일러 경고가 발생한다.
override 키워드와 함께 사용할 수 없다.
class Parent
{
public int num = 100;
public virtual void Func()
{
Console.WriteLine("부모 Func 호출 - num : {0}", num);
}
}
class Child : Parent
{
new public int num = 10;
new public void Func()
{
Console.WriteLine("자식 Func 호출 - num : {0}", num); // 자식의 num 변수 참조
}
public void Func2()
{
Func();
}
}
class Program
{
static void Main(string[] args)
{
Child p = new Child();
p.Func2(); // 자식의 Func 실행
}
}
클래스의 상속이나 메소드, 프로퍼티의 오버라이딩이 불가능하도록 봉인하는 키워드.
클래스 선언 시 붙여주면 해당 클래스의 상속이 불가능해지고,
부모 클래스를 상속한 클래스에서 메소드나 프로퍼티를 오버라이딩 할 때, override 키워드와 sealed 키워드를 함께 사용하면
해당 메소드나 프로퍼티의 추가적인 오버라이딩이 불가능해진다.
sealed class Parent
{
public void Func()
{
}
}
class Child : Parent // 에러
{
}
// sealed method
class Parent
{
public virtual void Func()
{
}
}
class Child : Parent
{
public override sealed void Func() // override와 함께 사용해 주어야 함
{
}
}
'프로그래밍 > C#' 카테고리의 다른 글
Property(프로퍼티), Indexer(인덱서) (0) | 2016.07.30 |
---|---|
as Keyword, is Keyword - 타입 캐스팅 (0) | 2016.07.29 |
가변 길이 매개 변수 (0) | 2016.07.29 |
nullable 데이터 타입, var Keyword (0) | 2016.07.29 |
ref keyword, out keyword (0) | 2016.07.27 |