C #을 상속
상속은 객체 지향 프로그래밍에서 가장 중요한 개념의 일이다. 상속 만들고 훨씬 쉽게 응용 프로그램을 유지하게하는 클래스를 정의하는 다른 클래스를 기반으로 클래스를 정의 할 수있게 해준다. 또한 도움 코드 재사용 및 개발 시간을 감소시킨다.
당신이 클래스를 만들 때, 프로그래머 만 클래스의 기존 구성원이 될 수 있습니다 상속하는 새로운 클래스를 디자인해야 완전히 데이터 멤버와 멤버 함수 새를 다시 작성할 필요가 없습니다. 기존의기본 클래스는 클래스라고, 새로운 클래스는 파생 클래스라고합니다.
소속 상속의 아이디어의 실현 (IS-A)의관계. 예를 들면, 포유류(IS-A) 동물 개는 포유 동물 (IS-A)에 속하는,따라서개가 (IS가-A)동물속하는속한다.
자료 및 파생 클래스
클래스는이 데이터와 함수에서 여러 개의 기본 클래스 또는 인터페이스를 상속 할 수 있음을 의미 하나 이상의 클래스 또는 인터페이스에서 파생 될 수있다.
다음과 같이 C #을 구문 파생 클래스가 생성 :
<ACESS 지정자> 클래스 <BASE_CLASS> { ko. } 클래스 <derived_class> : <BASE_CLASS> { ko. }
파생 클래스의 직사각형 인 기본 클래스 모양이,이, 가정 :
시스템을 이용하여; 네임 스페이스 InheritanceApplication { 클래스 모양 { 공공 무효 setWidth (INT의 w) { 폭 = w; } 공공 무효 setHeight (INT의 시간) { 높이 = H; } INT 폭 보호; INT 높이 보호; } // 파생 클래스 클래스 사각형 : 모양 { 공공 INT의의 getArea () { 반환 (폭 * 높이); } } 클래스 RectangleTester { 정적 무효 메인 (문자열 []에 인수) { 사각형 사각형 = 새로운 Rectangle (); Rect.setWidth (5); Rect.setHeight (7); 개체 Console.WriteLine을의 // 인쇄 영역 ( "총 면적 : {0}", Rect.getArea ()); Console.ReadKey (); } } }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
총 면적 : 35
기본 클래스를 초기화
파생 클래스는 멤버 변수 및 기본 클래스의 멤버 메서드를 상속합니다. 서브 클래스 객체가 생성되기 전에 따라서, 부모 개체가 생성되어야한다. 당신은 멤버 초기화 목록에서 상위 클래스를 초기화 할 수 있습니다.
다음 프로그램은이 점을 보여줍니다
시스템을 이용하여; 네임 스페이스 RectangleApplication { 클래스 직사각형 { // 멤버 변수는 두 배 길이를 보호; 이중 폭을 보호; 공공 직사각형 (더블 리터, 더블 w) { 길이 = 1; 폭 = w; } 공공 이중의 getArea () { 길이 * 너비를 반환; } 공공 무효 표시 () { Console.WriteLine ( "길이 : {0}", 길이); Console.WriteLine ( "폭 : {0}", 폭); Console.WriteLine ( "크기 : {0}"의 getArea ()); } } // 끝 클래스의 직사각형 클래스 탁상 : 직사각형 { 개인 이중 비용; 공공 탁상 (더블 리터, 더블 w) : (w 리터)베이스 {} 공공 더블 GetCost () { 이중 비용; 비용 =의 getArea () * 70; 비용을 반환; } 공공 무효 표시 () { base.Display (); Console.WriteLine ( "비용 : {0}", GetCost ()); } } 클래스 ExecuteRectangle { 정적 무효 메인 (문자열 []에 인수) { 탁상 t = 새로운 탁상 (4.5, 7.5); t.Display (); Console.ReadLine (); } } }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
길이 : 4.5 폭 : 7.5 지역 : 37,125 비용 : 2362.5
C # 다중 상속
C #은 다중 상속을 지원하지 않습니다.그러나, 다중 상속을 달성하기 위해 인터페이스를 사용할 수있다. 다음 프로그램은이 점을 보여줍니다
시스템을 이용하여; 네임 스페이스 InheritanceApplication { 클래스 모양 { 공공 무효 setWidth (INT의 w) { 폭 = w; } 공공 무효 setHeight (INT의 시간) { 높이 = H; } INT 폭 보호; INT 높이 보호; } // 기본 클래스의 PaintCost 공용 인터페이스 PaintCost { INT getCost (INT 영역); } // 파생 클래스 클래스 사각형 : 모양, PaintCost { 공공 INT의의 getArea () { 반환 (폭 * 높이); } 공공 INT getCost (INT 지역) { 반환 영역 * 70; } } 클래스 RectangleTester { 정적 무효 메인 (문자열 []에 인수) { 사각형 사각형 = 새로운 Rectangle (); INT 영역; Rect.setWidth (5); Rect.setHeight (7); 영역 Rect.getArea = (); 개체 Console.WriteLine을의 // 인쇄 영역 ( "총 면적 : {0}", Rect.getArea ()); Console.WriteLine (이하 "총 비용을 페인트 : $ {0}", Rect.getCost (지역)); Console.ReadKey (); } } }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
총 면적 : 35 총 비용 페인트 : $ (2450)