250x250
Notice
Recent Posts
Recent Comments
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

minjea.dev의 코딩블로그

[c#] 추상 클래스 본문

코딩강좌/c#

[c#] 추상 클래스

minjea.dev 2022. 4. 20. 12:00
728x90

저번에 오버라이드에 대해 알아보았을때는, 부모 클래스에서 virtual 키워드로 가상 메서드를 정의하고, 자식클래스에서 override 키워드를 이용해 그 가상 메서드를 오버라이딩 했습니다. 그런데 오늘 배울 추상 클래스의 경우에는, 추상 클래스의 인스턴스 생성은 불가능하지만 그 클래스를 상속받는 자식 클래스에서는 그 클래스의 추상 메서드에 대해 자식들이 강제로 재정의하도록 강제하는것이 가능합니다.

 

그렇다면 추상 클래스는 어떻게 만들수 있을까요? 추상 클래스를 만드는 방법은, 클래스 키워드 앞에 abstract 키워드를 붙여주기만 하면 됩니다.

// 추상클래스
abstract class absClass {}

그렇다면 추상 클래스 내부에서 추상 메서드는 어떻게 만들까요? 바로 접근제한자 앞에 abstract 키워드를 붙여 만들수 있습니다. (다만 추상메서드는 코드를 포함할수 없고, 아래 형식으로만 만들수 있습니다.)

접근제한자 abstract 리턴값 메서드명();

또한, 추상메서드에도 일반 메서드를 포함할수 있습니다. 정의법은 그냥 메서드와 동일합니다. 다만, 추상메서드가 아닌 일반메서드는 상속을 받은 클래스에서 재정의하지 않아도 됩니다.

 

이렇게 추상메서드를 포함한 추상클래스를 상속받은 클래스에서는, 부모클래스에서 정의된 추상메서드를 무조건 다음과 같이 override를 이용해 재정의해야합니다.

Something some = new Something();
some.WriteSomething("이게 콘솔에 뜨면 성공입니다");

abstract class absClass {
    public abstract void WriteSomething(string something);
}

class Something:absClass {
    public override void WriteSomething(string something){
        Console.WriteLine(something);
    }
}

 

이렇게 오늘은 추상클래스에 대해 알아보았습니다. 추상클래스는 자식클래스에서 특정 메서드를 재정의하는것을 강제하고 싶을때 많이 사용된다는 것을 기억해두시면 좋을듯 합니다.

728x90