본문 바로가기

전체 글49

C# 정리 ) 메서드 오버로드, 연산자 오버로드 [메서드 시그니처] 라는것이 있다. 메서드 시그니처는 어떤 메서드를 고유하게 식별하고 정의할 수 있는 정보를 의미한다. 메서드의 시그니처가 될 수 있는것은 무엇이 있을까? 1. 메서드 이름 2. 리턴 타입 3. 매개변수의 수 4. 개별 매개변수 타입 들이 있다. 따라서 메서드가 같다는 말은 메서드 시그니처가 같다 라는 말과 동일하다. 이전 포스트에서 오버라이드에 대해서 다루었다. 이름은 오버로드와 비슷하지만 이 둘은 다르다. 비슷한 경향이 있기는 하다. 오버라이드 : 메서드 시그니처가 완전히 동일한 메서드를 재정의 하는 것 오버로드 : 메서드 시그니처중 리턴값은 무시하고 이름만 같은 메서드가 "매개변수의 수", "개별 매개변수 타입" 만 다르게 재정의 되는 것 둘의 이름이 상당히 햇갈리니 잘 기억하길 바.. 2021. 12. 4.
C# 정리 ) object 기본 메서드 확장 objcet 클래스의 ToString의 경우 인스턴스 값을 적절하게 표현하는 내용으로 재정의 하는것이 보통이다. ToString을 다시 설명하자면, ToString 메서드는 호출시 해당 인스턴스가 속한 클래스의 전체 이름(FQDN)을 리턴한다. 클래스이름 test = new 클래스이름(); string getToString = test.ToString(); 이 코드에서 getToString은 test의 전체 이름 : 프로젝트이름.클래스이름 이다. 이 ToString을 오버라이드 하면 상당히 편리한데, 특히 C#으로 윈도우 GUI를 제작할 때 ToString 오버라이드의 진가가 발휘된다. using System; namespace Project1 { class 테스트 { private string 난이것을.. 2021. 12. 3.
C# 정리 ) base 를 이용한 메서드 재사용 class 도형 { virtual public void 도형의각() { Console.WriteLine("도형 입니다."); } } class 삼각형 : 도형 { override public void 도형의각() { Console.WriteLine("도형 입니다."); Console.WriteLine("삼각형 입니다."); } } 다음은 virtual, orverride 예약어를 통해 자식 클래스에서 메서드를 재정의를 한 코드이다. 잠깐 상속을 하는 이유를 생각해보자. 상속을 하게되면 상위 클래스의 필드와 메서드들을 그대로 이용할 수 있다. 따라서 만약 코드를 수정해야 한다면 상위 클래스에서만 수정하김나 하면 된다. 상속을 받지 않고 같은 기능을 계속해서 작성했다면 모두 수정해 주어야 할 것이다. 이제 .. 2021. 12. 1.
C# 정리 ) 메서드 오버라이드 지금부터 객체지행의 4대 특성중 다형성을 다루겠다. 이 4대 특성은 후에 따로 다루겠다. 일단 이런게 있구나 하고 넘어가도 좋다. using System; namespace Project1 { class 도형 { public void 도형의각() { Console.WriteLine("도형은 각을 가지고 있습니다"); } } class 삼각형 : 도형 { public void 도형의각() { Console.WriteLine("삼각형 입니다."); } } class 사각형 : 도형 { public void 도형의각() { Console.WriteLine("사각형 입니다."); } } class Class1 { public static void Main(string[] args) { 삼각형 삼각 = new 삼.. 2021. 12. 1.