C#에서 상속을 사용하는 방법

C Eseo Sangsog Eul Sayonghaneun Bangbeob



객체 지향 프로그래밍 언어로 코드를 작성하는 동안 새 클래스에서 기존 코드를 재사용하거나 기존 클래스에 추가 기능을 추가해야 하는 상황에 직면할 수 있습니다. 이러한 경우 상속이 유용합니다. 개체 지향 프로그래밍의 상속을 통해 클래스는 다른 클래스의 속성과 동작을 상속할 수 있습니다. 이 문서에서는 C# 및 다양한 유형의 상속 사용에 대해 다룹니다.

목차

C#에서 상속이란?

C#에서 상속이 작동하는 방식







C#의 상속 유형



결론



C#에서 상속이란?

상속을 사용하는 C#에서 한 클래스는 다른 클래스의 속성과 메서드를 가져오거나 상속할 수 있습니다. 즉, 기본 클래스 또는 수퍼 클래스로 알려진 기존 클래스를 기반으로 새 클래스를 만들 수 있습니다. 기본 클래스의 속성을 취한 후에 형성된 클래스를 호출합니다. 파생 클래스 또는 하위 클래스.





C#의 이 파생 클래스는 기본 클래스의 속성을 사용할 뿐만 아니라 고유한 기능을 추가할 수도 있습니다.

C#에서 상속이 작동하는 방식

C#에서 상속은 콜론을 사용하여 이루어집니다. (:) 상징. 기본 클래스 이름은 콜론 뒤에 정의되며 파생 클래스에 의해 지정됩니다.



다음은 기본 클래스에서 속성을 가져오는 파생 클래스를 만들기 위한 구문입니다.

클래스 파생 클래스 : 기본 클래스

{

// 파생 클래스 멤버

}

여기 이 코드에서 파생 클래스 파생 클래스의 이름이고 기본 클래스 기본 클래스의 이름입니다. 그만큼 : 기호는 DerivedClass가 BaseClass에서 상속됨을 나타냅니다. DerivedClass의 구성원은 비공개가 아닌 경우 BaseClass 구성원에 액세스할 수 있습니다.

C#의 상속 유형

C#은 단일, 다중 수준, 계층 및 다중 상속의 네 가지 유형의 상속을 지원합니다. 각 유형을 살펴보겠습니다.

단일 상속

단일 상속은 파생 클래스가 단일 기본 클래스의 속성만 가져오거나 상속하는 가장 일반적인 유형의 상속입니다.

예를 들어, 주어진 코드는 클래스 계층 구조를 설명하고 상속 개념을 보여줍니다.

시스템 사용 ;

시스템 사용 ;
클래스 자동차
{
공공의 무효의 시작 ( )
{
콘솔. WriteLine ( '차 시동' ) ;
}
}
클래스 테슬라 : 자동차
{
공공의 무효의 가속 ( )
{
콘솔. WriteLine ( '테슬라 가속' ) ;
}
}
수업 프로그램
{
공전 무효의 기본 ( [ ] 인수 )
{
테슬라 마이테슬라 = 새로운 테슬라 ( ) ;
myTesla. 시작 ( ) ; // 출력: 자동차 시동
myTesla. 가속 ( ) ; // 출력: 테슬라 가속
}
}

위의 코드에서 자동차 등급 기본 클래스이며 다음과 같은 메서드가 있습니다. 시작() , 단순히 메시지를 인쇄합니다. 자동차 출발 콘솔에.

그만큼 테슬라급 Car 클래스에서 파생되며 Car 클래스의 모든 속성을 사용합니다. Tesla 클래스는 다음과 같은 메서드를 추가합니다. 가속() , 메시지를 인쇄합니다. 테슬라 가속 콘솔에.

그만큼 기본() 함수는 Tesla 클래스의 인스턴스를 정의합니다. myTesla Start() 및 Accelerate() 메서드를 호출합니다.

다단계 상속

다단계 상속은 파생 클래스가 다른 파생 클래스에서 상속되고 다시 기본 클래스에서 상속되는 경우입니다.

예를 들어, 다음 C# 코드는 클래스 계층 구조에서 상속 및 메서드 재정의를 보여줍니다.

시스템 사용 ;
클래스 동물
{
공공의 무효의 먹다 ( )
{
콘솔. WriteLine ( '동물 먹기' ) ;
}
}
클래스 포유류 : 동물
{
공공의 무효의 달리다 ( )
{
콘솔. WriteLine ( '달리는 포유류' ) ;
}
}
클래스 개 : 포유류
{
공공의 무효의 짖다 ( )
{
콘솔. WriteLine ( '개 짖는 소리' ) ;
}
}
수업 프로그램
{
공전 무효의 기본 ( [ ] 인수 )
{
개 마이독 = 새로운 개 ( ) ;
내 강아지. 먹다 ( ) ; // 출력: 동물 먹기
내 강아지. 달리다 ( ) ; // 출력: 포유류 달리기
내 강아지. 짖다 ( ) ; // 출력: 개 짖는 소리
}
}

여기 에서 상속받은 파생 클래스입니다. 포유류 , 차례로에서 상속 동물 . Dog 클래스는 Mammal 및 Animal의 모든 속성, 메서드 및 동작에 액세스할 수 있으며 고유한 메서드를 정의할 수도 있습니다. 짖다() .

그만큼 동물 클래스 기본 클래스이며 다음과 같은 메서드가 있습니다. 먹다() , 단순히 Animal eating 메시지를 콘솔에 출력합니다.

그만큼 포유류 강 Animal 클래스에서 파생되며 다음 메서드를 추가합니다. 달리다() , Mammal running 메시지를 콘솔에 출력합니다.

그만큼 도그 클래스 Mammal 클래스에서 파생되며 라는 메서드를 추가합니다. 짖다() , Dog barking 메시지를 콘솔에 출력합니다.

Main() 메서드는 Dog 클래스의 인스턴스를 만듭니다. 내 강아지 Eat(), Run() 및 Bark() 메서드를 호출합니다.

Eat() 및 Run() 메서드는 Dog 클래스에서 정의되지 않지만 부모 클래스에서 상속됩니다. 동물 그리고 포유류 , 각각. 그만큼 짖다() 메서드는 Dog 클래스에서만 정의됩니다.

  텍스트
자동으로 생성된 설명

계층적 상속

계층적 상속에서 서로 다른 수의 파생 클래스가 하나의 기본 클래스에서만 상속됩니다. 예를 들어:

시스템 사용 ;
클래스 모양
{
공공의 무효의 그리다 ( )
{
콘솔. WriteLine ( '도형 그리기' ) ;
}
}
클래스 서클 : 모양
{
공공의 무효의 채우다 ( )
{
콘솔. WriteLine ( '필링 서클' ) ;
}
}
클래스 스퀘어 : 모양
{
공공의 무효의 색상 ( )
{
콘솔. WriteLine ( '컬러링 스퀘어' ) ;
}
}
수업 프로그램
{
공전 무효의 기본 ( [ ] 인수 )
{
서클마이서클 = 새로운 서클 ( ) ;
myCircle. 그리다 ( ) ; // 출력: 도형 그리기
myCircle. 채우다 ( ) ; // 출력: 원 채우기

스퀘어 마이스퀘어 = 뉴스퀘어 ( ) ;
마이스퀘어. 그리다 ( ) ; // 출력: 도형 그리기
마이스퀘어. 색상 ( ) ; // 출력: 색칠하기 사각형
}
}

위의 코드에서 둘 다 그리고 정사각형 에서 상속받은 파생 클래스입니다. 모양 . 이들은 Shape에 정의된 Draw() 메서드에 액세스할 수 있으며 고유한 메서드인 Fill() 및 Color()를 정의할 수도 있습니다.

여기서 우리는 Circle 클래스의 객체를 생성했습니다. 마이서클 그리고 의 대상 정사각형 명명된 클래스 마이스퀘어 . 그런 다음 그리다() 두 개체 모두에서 Shape 클래스에서 상속되는 메서드입니다.

다음으로 채우다() Circle 클래스에 고유한 myCircle의 메소드 및 색상() 스퀘어 클래스에 고유한 mySquare의 메서드입니다.

출력은 아래와 같이 콘솔에 인쇄됩니다.

  텍스트
중간 신뢰도로 자동 생성된 설명

다중 상속

다중 상속은 파생 클래스가 여러 기본 클래스에서 상속되는 경우입니다. 그러나 C#은 다중 상속을 지원하지 않습니다. 유사한 기능을 달성하기 위해 C#은 다음을 사용합니다. 인터페이스 .

결론

C#의 상속을 통해 클래스는 기본 클래스에서 동작과 기능을 상속할 수 있습니다. 상속을 사용하면 코드를 재사용하고 프로그램 내에서 계층적 흐름을 만들 수 있습니다. 다양한 유형의 상속을 이해하면 유지 관리 및 확장이 더 쉬운 보다 효율적이고 조직적인 코드를 작성할 수 있습니다.