{TIL} 추상클래스와 인터페이스

Kwaksang·2024년 5월 2일

TIL

목록 보기
12/37
post-thumbnail

추상클래스와 인터페이스 특강

Chapter .1 추상클래스

  • abstract 가 public 뒤에 위치
  • ex> NPC와의 대화
  • 구체적으로 구현하는 부분과 그렇지 않은 부분을 나눌 때 사용
  • 구현을 자식한테 미뤄주는 부분과 그 순서를 나누어 줄 때
  • interface 가 아닌 class 와 비교 대상
public abstract class InterAbstract
{
    public abstract void Phace1();
    public abstract void Phace2();
    public abstract void Phace3();

    public void EndGame()
    {
        Phase1();
        Phase2();
        Phase3();
    }
}

public class StartingNPC : InterAbstract
{
    public override void Phase1()
    {
        Console.WriteLine("1");
    }

    public override void Phase2()
    {
        Console.WriteLine("2");
    }

    public override void Phase3()
    {
        Console.WriteLine("3");
    }

Chapter .2 인터페이스

Content .1 인터페이스의 특징

  • 클래스 대신 적용
  • ex> UI (User Interface)
  • 추상적인 개념을 묶어놓는 것
  • 구현을 강제로 해야 함
public class ProgramEX
{
    Card card = new Card();
    Cash cash = new Cash();
    SamsungPay sp = new SamsungPay();
    BodyScanner scanner = new BodyScanner();

    void Main()
    {
	GetPayment(card);
	GetPayment(cash);
	GetPayment(sp);
	GetPayment(scanner);

	GetPaymentEx(cash);
    }

    void GetPayment(IPay pay)
    {
        pay.PaymentEx();
    }
}

public class Card
{

}

public interface IPay
{
    public void Payment();
}

public interface UseRounge
{
    public void UseRounge();
}

public class AmexCard : Card, IPay, UseRounge // 클래스는 최대 1개, 인터페이스는 여러개 가능
{
    public void Payment()
    {
        Console.WriteLine("IC 홀더에 꽃는다");
    }
}

public class CheckCard : Card, IPay // 라운지 이용 x
{
    public void Payment()
    {
        Console.WriteLine("IC 홀더에 꽃는다");
    }
}

public class Cash : IPay
{
    public void Payment()
    {
        Console.WriteLine("현금을 준다");
    }
}

public class SamsungPay : IPay
{
    public void Payment()
    {
        Console.WriteLine("스마트폰을 댄다");
    }

public class BodyScanner : IPay
{
    public void Payment()
    {
        Console.WriteLine("팔을 댄다");
    }
}

Content .2 인터페이스를 게임에 적용했을 때

  • if ( GetComponent )

  • if ( GetComponent )

  • 피해를 주는 class : IDamage

  • 치유를 하는 class : IHealing

추상클래스와 인터페이스가 비슷하다고 생각했는데,
사용 방법은 유사하지만 사실상 아예 다르다는 것을 깨닳았고
직접적으로 사용을 하는 경우가 없더라도 협업을 위해 필히 이해하고
사용하는 방법을 습득해야 겠다고 느낌

profile
게임은 재미와 기능!

0개의 댓글