"상속(Inheritance)" 필기
.NET프로그래밍/C# 3.5 SP1 2009. 8. 14. 16:58 |상속(Inheritance) : 클래스들간의 관계
클래스 상속
- 개체 지향 프로그래밍의 장점 중의 하나는 이미 만들어져 있는 클래스를 재사용 하는 것이다. 이 때 재사용에 대한 핵심개념이 바로 상속이다.
- 부모의 재산을 자식에게 상속하듯이 부모클래스(기본클래스)의 모든 멤버를 자식클래스(파생클래스)에게 재사용토록 허가하는 기능을 의미한다.
- 여러 클래스들 간의 관계를 설정함에 있어서 수평 관계가 아닌 부모와 자식간의 관계처럼 계층적인 관계를 표현하고자 할 때 사용하는 개념을 상속이라 한다.
Object 클래스 : 교재347~348페이지
- 모든 클래스들의 부모 클래스
- 닷넷에서 가장 높은 층에 속하는 시조격 클래스
- 새롭게 만들어지는 모든 클래스들은 Object 클래스로부터 상속 받음(생략 가능)
기본(Base) 클래스
- 다른 클래스의 부모 클래스가 되는 클래스
- Base 클래스 또는 부모(Parent) 클래스로 표현
파생(Derived) 클래스 : Sub
- 다른 클래스로부터 멤버를 물려받은 클래스
- Derieved 클래스 또는 자식(Child) 클래스로 표현
접근 한정자 : Access Modifier
public : 공용, 외부에 공개
private : 전용, 내부에서만 사용
protected : 제한적인, 자식에게만 공개
internal : 어셈블리(DLL) 파일 내에서만 공개
재(다시) 정의 : 오버라이드(Override) : 부모와 자식간의 멤버명이 충돌???
- 부모와 자식이 동일 : 인스턴스 생성시 사용한 클래스의 멤버
- 부모에는 아무것도 안붙이고, 자식에는 new키워드를 붙여서 하위(자식클래스)에서 새롭게 정의한다.
- 부모 virtual, 자식에는 override : 제일 좋은 형태
- 부모 abstract, 자식에는 override
ToString() 메서드 오버라이드
- Object 클래스에 정의되어 있는 ToString() 메서드는 기본적으로 클래스의 이름값을 반환시켜준다.
- 또는 정수형과 같이 대표가 되는 값이 들어있는 경우는 그 값을 문자열로 변환해서 출력해준다.
- 내가 만든 클래스의 대표가 되는 속성 또는 값을 외부에 인스턴스명으로 사용해서 출력하고자 할 때에는 ToString() 메서드를 재정의(Override)해서 사용해야 한다.
추상 클래스(Abstract)
- 클래스 설계시 부모 클래스 역할을 하면서, 강제로 자식 클래스에게 특정 멤버명을 물려주고자 할 때 정의
- 추상클래스는 멤버의 실제 내용을 구현하지 않고, 자식 클래스에서 멤버를 구현
- 주로 선임이 추상클래스, 후임이 추상클래스를 상속받은 클래스 구현
인터페이스(Interface)
- 추상 클래스와 같이 다른 클래스에게 멤버명을 미리 강제로 사용토록 할 때
- 인터페이스는 몀버명만 갖는반면, 추상클래스는 다름 멤버도 가질 수 있다.
- 인터페이스는 자동차로 따지면, 전세계표준(ISO), 국내표준㉿ 등의 의미를 지닌다.
- C#은 다중상속이 불가능하지만(C++가능), 인터페이스 다중 상속은 가능하다.
- 자동차 규격, 예를들어 배터리 충전(점프선)
봉인클래스(Sealed) : 최종 클래스, 마지막 클래스
- 더 이상 상속되지 않는 클래스
- Sealed 키워드를 붙여서 상속금지시킨다.
'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글
65. 명령줄인수 (0) | 2009.08.17 |
---|---|
C# 프로그래밍 관련 단어정리 (0) | 2009.08.14 |
64. 봉인클래스(Sealed) (0) | 2009.08.14 |
63. 인터페이스(Interface) (0) | 2009.08.14 |
62. 추상클래스(Abstract) (0) | 2009.08.14 |