오늘은 추상클래스에 대해 알아볼것이다.
추상 클래스란 무엇인가?
추상 클래스란 상속받은 클래스에서 공통적으로 구현해야하는 멤버 혹은 클래스를 추상적으로 구현하는 것이다.
추상적으로 만들어진 것들을 추상 메소드, 추상 클래스라 부른다.
추상 클래스에는 추상 메서드와 일반 메소드 가 함께 존재할 수 있다.
public abstract class 클래스
{
public int n = 10;
public abstract void Print();
}
추상 클래스의 선언 방법은 클래스 앞에다 abstract를 붙이면 된다.
추상화를 할려는 멤버 앞에도 abstract를 붙여야한다.
추상 클래스를 상속받게되면 추상 멤버를 구현하지 않았다고 뜬다.
이제 추상 멤버를 구현하는법을 알아보겠다.
추상 클래스를 구현하는 방법
추상 클래스를 구현하기 전 override라는 키워드를 먼저 알아야한다.
override는 가상 구현을 확장하거나 수정하는 데 필요한 것으로
부모클래스로부터 상속받은 부모의 메소드를 재정의하여 사용하는 것이다.
public class TestClass : AbstactClass
{
public override void Print()
{
Console.WriteLine(n);
}
}
구현하지 않은 멤버 Print 메서드를 override를 이용해 구현해준다.
그렇다면 추상클래스 는 왜 사용하는 것일까?
추상 클래스를 사용하는 이유
추상 클래스를 사용하는 이유는 코드를 보다 더 구조적이게 설계할 수 있고 중간에 기능을 바꾸고 싶을때
수정, 추가에 대해 유연적이어서 코드의 유지보수성을 높여준다.
가상 클래스
가상 클래스는 추상 클래스와 매우 유사하지만 약간의 차이점들이 있다.
가상 클래스는 메서드,속성, 인덱서, 이벤트만을 선언할 수 있으며 추상 클래스와 동일하게
override를 이용해 재정의가 가능하지만 필수적으로 재정의 할 필요는 없다 또한 객체 생성이 가능하다.
public class Virtual
{
public int a = 10;
public int b = 15;
public virtual void Print()
{
Console.WriteLine(a);
}
}
가상 클래스를 만드는 방법은 가상으로 만들려는 멤버 앞에 virtual을 붙이면 된다.
버츄얼 클래스에서 a를 출력하는 Print라는 가상 메소드를 선언한다.
public class TestClass2 : Virtual
{
public override void Print()
{
Console.WriteLine(b);
}
}
이후 버츄얼 클래스를 상속받은 클래스에서 override으로 b를 출력하도록 재정의를 해준다.
가상 클래스는 재정의를 해주지 않아도 오류가 뜨지 않는다.
'C#' 카테고리의 다른 글
[C#] Event와 Action, Func (0) | 2024.07.14 |
---|---|
[C#] 델리게이트 (0) | 2024.07.12 |
[C#] 객체지향의 상속 (0) | 2024.07.01 |
[C#] 프로퍼티(Property) (0) | 2024.06.29 |
[C#] 접근제한자 (0) | 2024.06.26 |