C# - 상속
14967 단어 csharpprogrammingtutorialcodenewbie
우리는 눈 색깔, 피부색, 머리 색깔, 유전적 과민증 및 알레르기를 유전받을 수 있습니다.
이것은 코딩에서도 같은 방식으로 작동할 수 있습니다. 상속받을 부모 클래스 또는 구조체를 제공할 수 있습니다.
상속은 어떻게 작동합니까
글쎄, 특정 항목만 상속되는 인간 부모와 달리 코드에서 우리는 속성, 메서드 및 수정자로부터 모든 부모의 특성과 특성을 상속합니다.
은행을 예로 들어보자. 이것은 하나의 예이지만 이상적인 실생활 사용은 아니며 단지 상속의 예에 불과하다는 점을 지적해야 합니다.
public class Bank
{
public int Id { get; set; }
public string Name { get; set; }
public string SortCode { get; set; }
public void PaySomone(string accountNumber, string sortCode)
{
//some logic to pay the account number and sort code
Console.WriteLine($"Paid {accountNumber} and {sortCode}");
}
}
자, 우리는 은행을 가지고 있지만 온라인 전용 은행이나 실제 은행과 같이 여러 유형의 은행이 있을 수 있습니다.
이제 일반적으로 다음과 같이 작성합니다.
public class OnlineBank
{
public int Id { get; set; }
public string Name { get; set; }
public string SortCode { get; set; }
public string BankHomePage { get; set; }
public void PaySomeone(string accountNumber, string sortCode)
{
//some logic to pay the account number and sort code
Console.WriteLine($"Paid {accountNumber} and {sortCode}");
}
}
이것은 잘못된 방법입니다. 다음에 PhysicalBank 클래스를 만들 때 보게 될 것입니다.
public class PhysicalBank
{
public int Id { get; set; }
public string Name { get; set; }
public string SortCode { get; set; }
public string BankAddress { get; set; }
public void PaySomone(string accountNumber, string sortCode)
{
//some logic to pay the account number and sort code
Console.WriteLine($"Paid {accountNumber} and {sortCode}");
}
}
코드에서 냄새가 나는 이유를 알 수 있습니까? D.R.Y 원칙(Don't Repeat Yourself)을 따르지 않습니다. 두 클래스에 동일한 코드가 있으며 여러 속성, 메서드 및 논리를 공유할 필요가 없습니다.
상속을 사용하여 이 문제를 해결할 수 있습니다.
상속 수정
공통 논리를 포함하는 상속된 클래스를 활용하도록 OnlineBank 및 PhysicalBank를 재구성할 수 있습니다.
먼저 다음과 같이 기본 클래스를 만듭니다.
public class Bank
{
public int Id { get; set; }
public string Name { get; set; }
public string SortCode { get; set; }
public void PaySomeone(string accountNumber, string sortCode)
{
//some logic to pay the account number and sort code
Console.WriteLine($"Paid {accountNumber} and {sortCode}");
}
}
그래서 여기에 모든 은행이 가질 몇 가지 속성과 방법이 있습니다.
이제 "{classname} : {classname}"구문을 사용하여 OnlineBank 클래스에 대해 이것을 상속할 수 있습니다. : 문자를 사용하여 이 클래스가 이 클래스에서 상속할 코드를 알려줍니다.
이제 이것을 OnlineBank 클래스에 적용하고 일부 OnlineBank 특정 속성을 추가할 수 있습니다.
public class OnlineBank : Bank {
public string BankHomePage {get;set;}
}
public class PhysicalBank : Bank {
public string BankAddress {get;set;}
}
이제 하위 클래스에는 온라인 및 실제 은행 전용 속성이 포함되어 있지만 상위 속성 및 메서드에도 액세스할 수 있습니다. 콘솔 애플리케이션에서 다음 코드를 실행하여 이를 테스트할 수 있습니다.
using System;
namespace Bank
{
internal class Program
{
private static void Main(string[] args)
{
Console.WriteLine("Beginning Bank Transaction...");
var onlineBank = new OnlineBank();
onlineBank.PaySomeone("012345898", "01-01-01");
var physicalBank = new PhysicalBank();
onlineBank.PaySomeone("987654321", "10-10-10");
Console.ReadLine();
}
}
public class Bank
{
public int Id { get; set; }
public string Name { get; set; }
public string SortCode { get; set; }
public void PaySomeone(string accountNumber, string sortCode)
{
//some logic to pay the account number and sort code
Console.WriteLine($"Paid {accountNumber} & {sortCode}");
}
}
public class OnlineBank : Bank
{
public string BankHomePage { get; set; }
}
public class PhysicalBank : Bank
{
public string BankAddress { get; set; }
}
}
여기에서 이제 각 Bank 하위 클래스 내에서 선언하지 않고도 두 클래스 내에서 PaySomeone() 메서드에 액세스하고 이 기능을 다시 사용할 수 있음을 알 수 있습니다. 그것이 상속의 기본입니다.
이 기본 형태의 상속은 간단하고 유용하지만 유연하지 않거나 재사용성 및 확장성 측면에서 많은 것을 제공하지만, 예를 들어 돈으로 지불하는 것과 같이 둘 다 할 수 있지만 다른 방식으로 수행할 수 있는 다른 많은 기능을 지시하고 싶었다고 가정해 보겠습니다. 또는 수표를 현금화하십시오. 여기서 인터페이스와 추상 클래스가 작동합니다.
이 시리즈의 다음 장에서는 인터페이스와 상속에서 인터페이스를 사용하는 방법을 살펴보겠습니다.
Reference
이 문제에 관하여(C# - 상속), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gweaths/c-inheritance-68텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)