728x90
반응형
인터페이스(interface)와 추상 클래스(abstaract class)
인터페이스(Interface)
장점
- 다중 상속 지원: 클래스는 여러 인터페이스를 동시에 구현할 수 있으므로 다중 상속을 흉내낼 수 있습니다.
- 유연성: 인터페이스를 사용하면 클래스가 여러 독립적인 계약을 따를 수 있으며, 이로 인해 코드의 유연성이 향상됩니다.
- 코드 재사용: 여러 클래스가 동일한 인터페이스를 구현할 수 있으므로 코드 재사용이 증가합니다.
단점
- 구현 강제: 인터페이스를 구현한 클래스는 인터페이스의 모든 멤버를 제공해야 하므로 더 많은 작업이 필요할 수 있습니다.
- 제한된 기능: 인터페이스는 멤버 구현을 갖지 않으므로 특정 동작을 정의하기 어렵습니다.
예시
public interface IShape
{
void Draw();
}
public class Circle : IShape
{
public void Draw()
{
Console.WriteLine("Drawing a circle");
}
}
public class Square : IShape
{
public void Draw()
{
Console.WriteLine("Drawing a square");
}
}
추상 클래스(Abstract Class)
장점
- 부분 구현: 추상 클래스는 일부 멤버의 구현을 포함할 수 있으므로 공통된 동작을 구체화하고 코드 재사용을 증가시킬 수 있습니다.
- 추가 기능: 추상 클래스는 일반 멤버 및 추상 멤버를 모두 포함할 수 있으므로 다양한 기능을 제공할 수 있습니다.
단점
- 단일 상속: C#에서 클래스는 단일 상속만 지원하므로 추상 클래스를 상속하는 클래스는 다른 클래스를 상속할 수 없습니다.
- 강력한 결합: 추상 클래스를 상속하는 클래스는 부모 클래스와 강력하게 결합되며, 유연성이 감소할 수 있습니다.
예시
public abstract class Shape
{
public abstract void Draw(); // 추상 메서드
public void Resize()
{
Console.WriteLine("Resizing the shape");
}
}
public class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a circle");
}
}
public class Square : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a square");
}
}
각각의 선택은 프로그램의 요구사항과 디자인에 따라 다릅니다. interface
는 다중 상속 및 독립적인 계약을 지원하는 데 유용하며, abstract class
는 공통된 구현 및 부분 구현을 포함할 수 있어 다양한 동작을 지원합니다.
728x90
반응형
'개발 > 기타' 카테고리의 다른 글
[윈도우] 명령 프롬프트(CMD) 명령어 목록 (2) | 2023.12.03 |
---|---|
[Git Hub] 100Mb 넘는 파일 올릴 때 생긴 문제 해결 방법 (1) | 2023.12.01 |
[개발 상식] 값 타입(Value Type)과 참조 타입(Refrence Type) (0) | 2023.11.08 |
[개발 상식]박싱(Boxing)과 언박싱(Unboxing)에 대해 (0) | 2023.11.07 |
[개발 상식]태스크(Task)와 코루틴(Coroutine) (0) | 2023.11.06 |
댓글