S_pot

C#_abstract: 추상클래스 본문

C#

C#_abstract: 추상클래스

S_pot 2021. 6. 3. 15:32

자식메서드에서 추상클래스를 반드시 구현하도록 하기 위해서 사용한다.

namespace _210603_008
{
    abstract class Smart     // 추상 메소드를 가진 클래스는 추상클래스가 됨.
    {
        abstract public void Test1();   // 추상 메서드

        public abstract void Test2();   // 추상 메서드
        // 1. abstract가 붙는다.
        // 2. 본문(Body)이 없다.
        // 3. private으로 선언할 수 없다.
    }

    abstract class Child1 : Smart
    { // 추상 메서드를 가진 클래스를 상속 받으면 추상클래스가 된다.

    }

    class Child2 : Smart
    { // 부모의 추상 메서드를 모두 구현하면 일반 클래스가 된다. 
        public override void Test1()
        {   // 부모의 추상 메서드 구현
            // override를 명시해야만 한다.

        }

        public override void Test2()
        {   // 부모의 추상 메서드 구현

        }
    }

    abstract class Child3 : Smart
    { // 추상 메서드를 가진 클래스를 상속받아서
      // 부모의 추상 메서드를 1개라도 구현하지 않으면
      // 추상클래스가 된다.
        public override void Test1()
        {
            
        }

     
    }

    class Program
    {
        static void Main(string[] args)
        {
           // Child2 aChild1 = new Child1();  // 추상클래스여서 객체를 생성할 수 없다.
            Child2 aChild2 = new Child2();
           // Child2 aChild3 = new Child3();  // 추상클래스여서 객체를 생성할 수 없다.

        }
    }
}