□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□ C shap_16. C# 상속과 생성자, base 키워드 /
업케스팅(Upcastting) , 다운캐스팅(Downcastting) / 중첩클래스
■ ■ ■ 상속과 생성자 ■ ■ ■
○ 상속 관계에서의 생성자 호출시 주의할점
-> 상위 클래스가 디폴트 생성자가 아닌 인자가 있는 생성자가 정의 되어 있는
경우에는 상속으로 인한 상위 클래스의 생성자 호출에 문제가 발생합니다.
■ 1. base 키워드
-> 정의 : 상위클래스를 참조할때 사용한다. (오버로드문제)
왜사용하나? : 상위클래스에 인자 두개로된 함수가 존재할때, 하위클래스에서도 두개의 인자를 같는 함수를
반드시 정의 해야 하는대 (오류가 생기므로) 이때 base 키워드를 사용합니다.
1) 첫번째 사용법 : 현재 클래스의 상위클래스를 참조할때 사용한다. (오버로드 문제..)
▶ 형식 :
public 상속받은하위클래스명 ( 상위클래스의 인자형식) : base ( 상위클래스의 인자형식) |
ex ) 상위 클래스를 참조할때의 하위클래스 함수메서드 형태 public 현제클래스명 (int x, int y) |
2) 두번째 사용법 : 상위클래스를 참조하고 추가로 하위클래스도 사용할때 (상위클래스 + 하위클래스)
▶ 형식 :
public 상속받은하위클래스명 ( 상위클래스의 인자형식) { base . 상위클래스메서드명() |
ex ) 상위 클래스를 참조할때의 하위클래스 함수메서드 형태 public 현제클래스명 (int x, int y) { base . 상위메서드명() ; // -> ① 상위클래스를 호출한다. Console.WriteLine(" 이렇게쓰는겁니다") ; |
}
▷ 사용법 :
class GrandFather class Father : GrandFather |
static void Main(string[] args) |
■ 2. 업캐스팅(Upcastting) 과 다운캐스팅(Downcastting) : 상속 관계의 객체 형 변환
-> 클래스도 상용자 정의 데이터형(Type) 이므로 형 변환이 가능합니다.
즉 상위클래스에 상속 관계에 있는 하위클래스 라고 할때 이들로 부터 생성된 객체는 서로 형 변환이 가능합니다.
○ 업캐스팅 : 자식에서 부모로 형변환
( 올리다 , 위로 올리다 자식이 위로 올라가다 -> 큰데이터형에 작은 데이터형이 속하므로 암시적 형변환 )
-> 형변환 되었으므로 꼭 부모객체만 사용가능
○ 다운캐스팅 : 부모가 자식으로 형변환시도 ->
( 부모인 큰공간이 자식인 작은 공간으로 가려하면 자리가 부족하므로 명시적 형변환이 필요함 )
-> 형변환 되었으므로 꼭 자식객체만 사용가능
▷ 업캐스팅 상위클 변수1 = new 하위클(); A1 Fr = new A2(); |
▷ 다운캐스팅 하위클 변수2 = (하위클)변수1; A2 Se = (A2)Fr; |
class A1 public void Special() |
static void Main(string[] args) // 상위 클래스의 메서드를 호출 // 하위클래스의 메서드를 호출 |
■ 3. 중첩 클래스
-> 클래스안에 내포된 클래스 또는 중첩클래스라고도 하며 클래스를 조합하는것인데
※ 객체의 특성중에 조합성 (Composition) 이 있다. : 어느객체가 또다른 객체를 포함할수 있다는 특성을 말한다.
이런것을 중첩 클래 도는 내포된클래스(Nested Class) 라고 합니다.
'C#' 카테고리의 다른 글
c# panel border color 변경 (0) | 2012.07.13 |
---|---|
C# 한글,영어 문자열 길이 알아보기 (0) | 2012.07.10 |
Visual Studio 2010 단축키 (0) | 2012.06.20 |
C# string.format 예제 (0) | 2012.06.20 |
windows form 예제 (c#) (0) | 2012.05.23 |