상속(Inheritance) : 부모 클래스에 정의된 데이터 및 메소드들을 파생클래스에서 이용할 수 있는 기능을 상속이라고 한다.
C#에서 파생클래스를 정의하기 위해서는 클래스명 뒤에 Colon (:)을 찍고 Base 클래스명을 써 주면 된다. 제약점은 C#에서는 파생클래스가 단 하나의 Base 클래스로부터 상속되어져야 한다는 것이다. 즉, 하나의 파생클래스는 2개 이상의 Base 클래스를 가질 수 없다.
오버로딩(Overloading)은 한 클래스 내에서 동일한 이름의 메서드를 추가 정의하는 것이다.
반면에 오버라이딩(Overriding)은 클래스간 상속 관계에서 메서드를 재 정의하는 기법이다.
두 클래스가 상속 관계에 있으면 부모 클래스의 public, protected 으로 선언된 메서드는 자식 클래스로 그대로 상속되어 자식클래스에서 사용이 가능하게 된다. 즉 이미 정의된 메서드를 재 사용하게 되는 것이다.
메서드를 오버라이딩 할 때 부모 클래스에서는 virtual 로, 자식 클래스에서는 override 키워드로 메서드를 정의해야 한다.
방법 1 : 부모 클래스에 virtual, 자식 클래스에 override 키워드를 사용하는 경우
using System.Collections.Generic; |
방법 2 : 부모 클래스에 virtual 를 미정의 시, 자식 클래스에서 메소드 앞에 new를 붙이면 된다.
using System; // new 를 통해 메서드를 재 정의하게 되면 부모 클래스의 원 메서드는 숨기게(가려지게) 된다. // 부모클래스와 동일 메소드(매개변수 똑같음)를 자식 클래스에서 생성하는것을 오버라이딩 |
실행결과
자식 클래스의 메소드 앞에 new를 붙이지 않았을 경우
오류목록에 숨기려면 new 를 붙이라고 에러 메시지를 보여준다.
예제로 사용한 코드
참고하면 좋은 글
ㅇ 클래스의 상속 : https://blog.hexabrain.net/142
'C# > 문법 및 기능' 카테고리의 다른 글
C# 파일 입출력 개념 정리 (0) | 2016.01.05 |
---|---|
C# int.TryParse (0) | 2015.12.25 |
C# 메소드 오버로딩 개념잡기 (0) | 2015.12.21 |
C# List 개념 이해 -1 (0) | 2015.12.14 |
C# 배열 개념 이해 및 실전 응용 (0) | 2015.12.13 |