프로그램 예제를 사용한 C# 상속 및 다형성
C#의 상속이란 무엇입니까?
계승 C#의 중요한 개념입니다. 상속은 부모 클래스와 자식 클래스를 정의하는 개념입니다. 하위 클래스는 상위 클래스의 메서드와 속성을 상속하지만 동시에 필요한 경우 메서드의 동작을 수정할 수도 있습니다. 필요한 경우 하위 클래스는 자체 메서드를 정의할 수도 있습니다.
프로그램 예제를 통해 C# 상속을 더 잘 이해해 보겠습니다.
C# 상속 예
이제 코드에 상속 개념을 어떻게 통합할 수 있는지 살펴보겠습니다.
단계 1) 첫 번째 단계는 Tutorial 클래스의 코드를 변경하는 것입니다. 이 단계에서는 Tutorial.cs 파일에 아래 코드를 추가합니다.
이제 TutorialID 및 TutorialName 필드 모두에 'protected'라는 액세스 한정자를 추가해야 합니다.
액세스 수정자 튜토리얼에서 이 액세스 수정자를 언급한 것을 기억하세요. 자, 여기서 이것을 갖는 목적을 볼 수 있습니다. 이 액세스 한정자가 있는 경우에만(보호됨) 하위 클래스가 상위 클래스의 필드를 사용할 수 있습니다.
단계 2) 두 번째 단계는 새로운 하위 클래스를 추가하는 것입니다. 이 클래스의 이름은 "Guru99Tutorial"입니다. 이 단계에서는 Tutorial.cs 파일에 아래 코드를 추가합니다. 코드는 Tutorial 클래스 정의 뒤에 배치되어야 합니다.
코드 설명:-
- 첫 번째 단계는 Guru99Tutorial 하위 클래스를 만드는 것입니다. 또한 이 클래스는 Tutorial 클래스의 하위 클래스가 될 것임을 언급해야 합니다. 이는 ':' 키워드로 수행됩니다.
- 다음으로 RenameTutorial이라는 메서드를 정의합니다. TutorialName 필드의 이름을 바꾸는 데 사용됩니다. 이 메소드는 Tutorial의 새 이름이 포함된 문자열 변수를 허용합니다.
- 그런 다음 TutorialName 필드에 pNewName 매개변수를 할당했습니다.
주의 사항: – “Guru99Tutorial” 클래스에 TutorialName 필드를 정의하지 않았더라도 여전히 이 필드에 액세스할 수 있습니다. 이는 “Guru99Tutorial”이 Tutorial 클래스의 하위 클래스이기 때문입니다. 그리고 Tutorial 클래스의 필드를 protected로 만들었기 때문에 이 클래스에서 해당 필드에 액세스할 수 있습니다.
단계 3) 마지막 단계는 기본 Program.cs 파일을 수정하는 것입니다. 콘솔 애플리케이션에서는 Guru99Tutorial 클래스의 객체를 만들 것입니다. 이 객체를 사용하여 RenameTutorial 메서드를 호출하겠습니다. 그런 다음 GetTutorial 메서드를 사용하여 TutorialName 필드를 표시하겠습니다.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { public class Tutorial { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID,string pName) { TutorialID=pID; TutorialName=pName; } public String GetTutorial() { return TutorialName; } } public class Guru99Tutorial:Tutorial { public void RenameTutorial(String pNewName) { TutorialName=pNewName; } static void Main(string[] args) { Guru99Tutorial pTutor=new Guru99Tutorial(); pTutor.RenameTutorial(".Net by Guru99"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
코드 설명:-
- 첫 번째 단계는 Guru99Tutorial 클래스에 대한 개체를 만드는 것입니다. 이는 'new' 키워드를 통해 수행됩니다. 이번에는 Tutorial 클래스의 객체를 생성하지 않는다는 점에 유의하세요.
- TutorialName 필드를 변경하려면 Guru99Tutorial 클래스의 RenameTutorial 메서드를 사용합니다. RenameTutorial 메서드에 ".Net by Guru99" 문자열을 전달합니다.
- 그런 다음 GetTutorial 메서드를 호출합니다. 이 메서드가 Guru99Tutorial 클래스에 정의되어 있지 않더라도 여전히 이 메서드에 액세스할 수 있습니다. 그런 다음 GetTutorial 메서드의 출력이 Console.WriteLine 메서드를 통해 콘솔에 표시됩니다.
위 코드를 올바르게 입력하여 프로그램이 성공적으로 실행되면 다음과 같은 출력이 표시됩니다.
출력:
출력에서 TutorialName 필드의 이름이 ".Net by Guru99"로 변경되었음을 분명히 알 수 있습니다. 이는 하위 클래스에서 호출한 RenameTutorial 메서드를 통해 가능해졌습니다.
C#의 다형성이란 무엇입니까?
다형성 C#에서는 하나의 이름이 여러 형태를 가질 수 있는 OOP 개념입니다. 예를 들어, 통신을 위한 스마트폰이 있습니다. 선택하는 통신 모드는 무엇이든 될 수 있습니다. 전화, 문자 메시지, 사진 메시지, 메일 등이 될 수 있습니다. 따라서 목표는 공통적입니다. 즉, 통신이지만 접근 방식은 다릅니다. 이를 다형성이라고 합니다.
아래 프로그램 예제를 통해 C# 다형성에 대해 더 잘 이해할 수 있습니다.
C# 다형성 예
이제 다형성 개념을 코드에 어떻게 통합할 수 있는지 살펴보겠습니다.
단계 1) 첫 번째 단계는 Tutorial 클래스의 코드를 변경하는 것입니다. 이 단계에서는 Tutorial.cs 파일에 아래 코드를 추가합니다.
코드 설명:-
1 & 2) 첫 번째 단계는 이전 예시와 동일합니다. SetTutorial 메서드의 정의를 그대로 유지하고 있습니다.
3) 이 방법은 매개변수 pID 및 pName을 기반으로 TutorialID 및 TutorialName을 설정합니다.
4) 여기서는 SetTutorial이라는 동일한 이름을 가진 새 메서드를 추가하는 클래스를 변경합니다. 이번에는 pName이라는 하나의 매개변수만 전달합니다. 이 방법에서는 TutorialName 필드를 pName으로 설정합니다.
단계 2) 마지막 단계는 기본 Program.cs 파일을 수정하는 것입니다. 콘솔 애플리케이션에서는 Guru99Tutorial 클래스의 객체를 만들 것입니다.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Tutorial { public int TutorialID; public string TutorialName; public void SetTutorial(int pID,string pName) { TutorialID=pID; TutorialName=pName; } public void SetTutorial(string pName) { TutorialName=pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Tutorial pTutor=new Tutorial(); pTutor.SetTutorial(1,"First Tutorial"); Console.WriteLine(pTutor.GetTutorial()); pTutor.SetTutorial("Second Tutorial"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
코드 설명:-
- 첫 번째 단계에서는 2개의 매개변수가 있는 SetTutorial 메서드를 사용합니다. 여기서 TutorialID와 TutorialName을 모두 이 메서드에 전달합니다.
- 두 번째 단계에서는 이제 단 하나의 매개 변수를 사용하여 SetTutorial 메서드를 호출합니다. 우리는 TutorialName을 이 메소드에 전달하고 있습니다.
위의 코드를 올바르게 입력하고 프로그램을 실행하면 다음 출력이 표시됩니다. 만약 튜토리얼 이름과 함께 튜토리얼 ID도 가져오고 싶다면 아래 단계를 따라야 합니다.
- public int GetTutorialID라는 별도의 메서드를 만듭니다.
- 해당 메서드에서 "return TutorialID"라는 코드 줄을 작성합니다. 이는 호출 프로그램에 TutorialID를 반환하는 데 사용할 수 있습니다.
출력:
출력에서 두 메서드가 모두 성공적으로 호출되었음을 분명히 알 수 있습니다. 이로 인해 "First Tutorial" 및 "Second Tutorial" 문자열이 콘솔로 전송되었습니다.
요약
- 상속은 하위 클래스가 상위 클래스의 필드와 메소드를 상속하는 것입니다. 그런 다음 하위 클래스는 자체 메서드를 정의할 수도 있습니다.
- 다형성 C# 하나의 이름이 여러 형태를 가질 수 있는 OOP 개념입니다.