Abstract modifier
Peponi │ 11/27/2024 │ 2m
C#
SyntaxKeywordModifier
Abstract modifier
11/27/2024
2m
Peponi
C#
SyntaxKeywordModifier
1. Introduction
abstract
한정자는 추상화된 형식 또는 멤버를 의미한다. (여기서 추상
이란, 불완전한 상태를 나타낸다) abstract
멤버는 abstract
형식에만 포함될 수 있고 파생 클래스에서 반드시 구현해야 한다. 또한 인스턴스화가 불가하고, 베이스 클래스로만 사용 가능하다. (static
사용이 불가능하다)
2. Example
public interface IMailService
{
void Send(string message);
string? Receive();
IMailService CreateService(object userToken);
}
// IMailService를 구현하는 abstract class.
// interface를 구현하는 경우에도 추상화 할 수 있다.
public abstract class MailClient : IMailService
{
protected IMailService? Service;
public abstract void Send(string message);
public abstract string? Receive();
public abstract IMailService CreateService(object userToken);
}
// abstract를 구현하는 파생 class
public class ClientTypeA : MailClient
{
public ClientTypeA(object userToken) => Service = CreateService(userToken);
public override void Send(string message) => Service?.Send(message);
public override string? Receive() => Service?.Receive();
public override IMailService CreateService(object userToken)
{
var transport = new MailTransport(userToken);
if (transport.Connect(userToken))
{
Service = transport;
return transport;
}
else throw new HttpRequestException($"Invalid connection - {userToken}");
}
}