상속을 받은 메소드이기 때문에~
우리는 이 메소드들을 우리가 마음대로 가지고 놀(?) 수가 있는 것이지요.
그럼 한번 Object 클래스를 상속 받아 제가 원하는 방식으로 바꿔보겠습니다.(원래 어떤 형식인지는 뜯어보지 않아서 잘은 모르겠습니다 ㅜㅜ)
1 class Dummy : Object
2 {
3 private int data;
4 public int Data
5 {
6 get { return data; }
7 set { data = value; }
8 }
9 public override string ToString()
10 {
11 return "이 객체는 Dummy 타입의 객체입니다.";
12 }
13 public override bool Equals(object obj)
14 {
15 if (obj is Dummy)//obj가 Dummy타입인지 확인
16 return this.Data == ((Dummy)obj).Data; //데이터 자체를 비교
17 else
18 return false;
19 }
20 }
다음과 같이 ToString(), Equals() 메소드를 제정의 하였습니다 ToString() 메소드는 호출시 "이 객체는 Dummy타입의 객체입니다."라는 문구를 반환하게 재설정하였고 Equals는 해당 데이터가 Dummy타입인지 먼저 검사하고 두 데이터가 같은지를 반환해줍니다. 메인에서 직접 테스트 해보도록 하지요.
1 class Program
2 {
3 static void Main(string[] args)
4 {
5 Dummy dummy = new Dummy();
6 Console.WriteLine(dummy.ToString()); //dummy.ToString()호출
7 Dummy dummy1 = new Dummy();
8 dummy1.Data = 10;
9 Dummy dummy2 = new Dummy();
10 dummy2.Data = 10;
11 if(dummy1.Equals(dummy2)) //재정의 Equals메소드로 비교
12 Console.WriteLine("같습니다.");
13 else
14 Console.WriteLine("다릅니다.");
15 if(object.ReferenceEquals(dummy1,dummy2)) //참조를 비교
16 Console.WriteLine("같습니다.");
17 else
18 Console.WriteLine("다릅니다.");
19 }
20 }
처음에는 Dummy 클래스에서 정의한 ToString()에 대한 테스트이고 그 다음은 Equals 메소드에 대한 테스트입니다. 보통 Equals는 기본적으로 참조를 비교하게 되어 있지요. 만약 재정의한 Equals 메소드가 참조를 비교한다면 절대 같을 수가 없겠죠. 서로 다른 클래스이니깐요. 결과를 한번 봐보도록하죠
이와같이 MS에서 이미 만들어 놓은 클래스들도 개발자가 다시 재정의해서 사용할 수 있다는 것을 알아보았습니다. 때에 따라 꼭 재정의를 해서 사용해야 될 경우가 많이 생기게 됩니다. 상속과 재정의 다형성을 잘 이해하셔서 잘만 쓰신다면 좋은 개발자가 되지 않을까라는 생각을 조심스레 하고 이것으로 마치도록 하지요 ^^
감사합니다~
'.NET > C#' 카테고리의 다른 글
C# File Input/Output (1) | 2009.12.24 |
---|---|
C# Collection (0) | 2009.12.21 |
Interface (0) | 2009.12.18 |
Class(5) (0) | 2009.12.18 |
형변환에 대해서... (0) | 2009.12.18 |
Property의 get, set 에 대한 간단한 정리 (0) | 2009.12.18 |
Class(4) (0) | 2009.12.17 |
Class(3) (0) | 2009.12.17 |
Class(2) (0) | 2009.12.16 |
Class(1) (0) | 2009.12.16 |