IT_Programming/C#

메서드 오버라이딩1 - new

JJun ™ 2006. 2. 24. 17:15

접근제어자 new  반환형 메서드이름([인자])

 

여기서 new는 "이 메서드를 새로 쓰겠다." 라고 C#
컴파일러에게 알려주고 있다. new 제한자는 메서드 뿐
아니라, 부모 클래스의 모든 멤버를 숨길 수 있다. 이렇게
부모 클래스의 멤버를 숨기면 자식 클래스는 이 멤버를
마치 부모에게서 물려받지 않고 자신이 만들어 낸 것 처럼
새롭게 쓸 수가 있는 것이다.

 

 

[ex]

class b
{
 int x = 55;
}

class Derived : b
{
 new int x = 100;

}

 

ex)

/* 2/24 객체지향적 프로그래밍(상속: new(접근제한자))*/
 
using System;

class shape
{
 public void Draw()
 {
  Console.WriteLine("이곳은 shape 클래스의 메소드 입니다.");
 }

}

class triangle : shape
{
 public new void Draw() /* 여기서 new(접근제한자)는 아버지클래스인 shape의 함수

                                       Draw()의 값을 숨기고 또다른 Draw()함수를 생성해서 다른 값을 주는 것임.
                                       즉 같은 이름의 Draw()함수일지라도 결국 다른 함수인 것이다. */
 {
  Console.WriteLine("이곳은 triangle 클래스의 메소드 입니다.");
  base.Draw(); /*base 키워드는 부모클래스의 메소드 호출후 출력
                        즉 기존에 숨겼던 아버지클래스의 Draw()함수의 값을 다시 출력함. */
 }
}

class newbase
{
 public static void Main()
 {
  shape s = new shape(); // 객체 생성후 메모리 등록
  s.Draw();
  triangle t = new triangle();
  t.Draw();
 }

}

'IT_Programming > C#' 카테고리의 다른 글

메서드 오버라이딩3 - virtual  (0) 2006.02.24
메서드 오버라이딩2 - abstract  (0) 2006.02.24
상속  (0) 2006.02.24
접근제한자  (0) 2006.02.24
생성자(constructor)  (0) 2006.02.24