본문 바로가기

C#

C# 인터페이스(Interface)와 IDisposeable 구현

반응형
  • 인터페이스의 이름 앞에 I를 붙이는 것이 관례
  • 다중 상속 가능
  • 메서드, 속성, 인덱서, 이벤트 선언 할 수 있음
  • 액세스 한정자를 붙이지 않지만 항상 public 임
  • virtual과 static을 붙일 수 없음
class Warrior : IWeapon, IShield, IDamage
{
    public int Attack { get; set; }
    public int Defense { get; set; }
    public int GetDamage() { return Attack - Defense; }
}

interface IWeapon
{
    int Attack { get; set; }
}

interface IShield
{
    int Defense { get; set; }
}

interface IDamage
{
    int GetDamage();
}

IDisposable 인터페이스

  • using 문을 사용하여 객체 생성
  • using 문이 종료 될 때 자동으로 Dispose 메서드 호출
public class Door : IDisposable
{
    public void Dispose()
    {
        Console.WriteLine($"문 닫고");
    }
}

public class DoorTest
{
    public DoorTest()
    {
        // using 문으로 객체를 생성하면 종료시 자동으로 Dispose() 메서드를 호출함
        using (Door door = new Door()) // 생성
        {
            Console.WriteLine($"문 열고");
        } // 종료
    }
}
DoorTest d = new DoorTest();

반응형