본문 바로가기

.NET C#/문법

interface, abstract 키워드

1. interface (인터페이스)

 

인터페이스는 일종의 약속입니다.

매서드, 이벤트, 인덱서, 프로퍼티만 가질 수 있습니다.

직접 인스턴스를 가질 수 없지만 인터페이스를 상속받는 클래스에서 생성 가능합니다.

이 때, 상속 받는 클래스에서는 인터페이스에 선언된 모든 매서드 및 프로퍼티를 public 한정자로 구현해야합니다.

클래스 외에도 구조체(struct)와 인터페이스(interface)도 인터페이스를 상속 받을 수 있습니다.

 

형태>

interface 인터페이스_명
{
    반환형식 매서드_명(매개변수_목록);
    //...
}

예시>

interface IMessage
{
    void SendMessage(string message);
}

인터페이스 상속>

class ConsoleMessage : IMessage
{
    public void WriteMessage(string message)
    {
        Console.WriteLine(message);
    }
}

2. abstract (추상)

 

abstract 키워드로 수식된 클래스를 추상 클래스(abstract class)라고 하며,

마치 인터페이스와 클래스 중간상태로 볼 수 있습니다.

일반적인 클래스와 동일하게 구현 가능하지만,

내부에 추상 매서드(abstract method)를 구현할 수 있습니다.

추상 매서드는 반드시 public, internal, protected 또는 protected internal 중 하나여야 합니다.

추상 매서드는 본문을 구현할 수 없습니다. (이러한 이유로 인터페이스의 특징을 나타냅니다.)

추상 매서드는 해당 추상 클래스를 상속받는 클래스에서 구현할 수 있습니다.

 

예시>

abstract class AbstractBase
{
    public abstract void ConsoleMessage(string message);
}

추상 클래스 상속>

class Derived : AbstractBase
{
    public override void ConsoleMessage(string message)
    {
        Console.WriteLine("message:{0}", message);
    }
}

'.NET C# > 문법' 카테고리의 다른 글

public, private, protected, internal 접근 한정자  (0) 2020.02.15