추상 클래스
추상 클래스와 파생 클래스의 공통 구조를 만드는 역할을 살펴보세요
추상 클래스은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 6개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 6개의 강의가 포함되어 있습니다.
추상 클래스
추상 클래스
다음 수업에 오신 것을 환영합니다! 이 수업에서는 C#의 추상 클래스와 그 목적, 그리고 추상 클래스가 인터페이스와 어떻게 다른지 배웁니다. 시작해 보겠습니다!

추상 클래스란?
추상 클래스란?
추상 클래스는 직접 인스턴스화할 수 없는 클래스입니다. 다른 클래스를 위한 설계도 역할을 하며, 파생 클래스에서 구현해야 하는 추상 메서드를 포함할 수 있습니다.
핵심 내용: 추상 클래스에는 완전히 구현된 메서드와 선언만 되어 있는 메서드(추상 메서드)를 모두 포함할 수 있습니다.
추상 클래스 정의하기
추상 클래스 정의하기
추상 클래스를 정의하려면 abstract 키워드를 사용하십시오. 예시는 다음과 같습니다.
팁: 관련 클래스에 공통 기반을 제공하려면 추상 클래스를 사용하십시오.
using System;
abstract class Animal {
public abstract void Speak(); // Abstract method
public void Sleep() { // Non-abstract method
Console.WriteLine("The animal is sleeping.");
}
}
추상 클래스 구현하기
추상 클래스 구현하기
파생 클래스는 추상 클래스의 모든 추상 메서드를 구현해야 합니다. 예시는 다음과 같습니다.
핵심 내용: 추상 메서드는 파생 클래스에서 구현해야 하는 동작을 정의합니다.
using System;
abstract class Animal {
public abstract void Speak(); // Abstract method
public void Sleep() {
Console.WriteLine("The animal is sleeping.");
}
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("The dog barks.");
}
}
class Program {
static void Main() {
Dog myDog = new Dog();
myDog.Speak(); // Outputs: The dog barks.
myDog.Sleep(); // Outputs: The animal is sleeping.
}
}
추상 클래스와 인터페이스 비교
추상 클래스와 인터페이스 비교
추상 클래스와 인터페이스는 모두 추상화에 사용되지만, 여러 측면에서 서로 다릅니다.
- 추상 클래스에는 구현된 메서드와 추상 메서드를 모두 포함할 수 있지만, 인터페이스에는 C# 8.0 이전에는 추상 메서드만 포함할 수 있었습니다.
- 추상 클래스에는 필드, 생성자, 멤버에 대한 접근 제한자를 포함할 수 있습니다.
- 클래스는 추상 클래스 하나만 상속할 수 있지만, 여러 인터페이스를 구현할 수 있습니다.
팁: 밀접하게 관련된 클래스에는 추상 클래스를 사용하고, 더 폭넓은 추상화에는 인터페이스를 사용하십시오.
추상 클래스를 사용하는 경우
추상 클래스를 사용하는 경우
다음과 같은 경우 추상 클래스를 사용하는 것이 좋습니다.
- 공유 기능을 포함하는 공통 기반 클래스를 정의하려는 경우
- 기본 구현을 제공하는 비추상 메서드를 포함해야 하는 경우
- 공통 계층 구조를 공유하는 관련 클래스를 다루는 경우
예시: Circle과 Rectangle 클래스를 위한 "Shape" 추상 클래스
연습 과제
연습 과제
CalculateArea()라는 추상 메서드를 포함하는 추상 클래스 Shape를 만드십시오. 파생 클래스 Rectangle과 Circle에서 이 메서드를 구현하십시오. 예시는 다음과 같습니다.
using System;
abstract class Shape {
public abstract double CalculateArea();
}
class Rectangle : Shape {
public double Width { get; set; }
public double Height { get; set; }
public override double CalculateArea() {
return Width * Height;
}
}
class Circle : Shape {
public double Radius { get; set; }
public override double CalculateArea() {
return Math.PI * Radius * Radius;
}
}
class Program {
static void Main() {
Shape rectangle = new Rectangle { Width = 5, Height = 4 };
Shape circle = new Circle { Radius = 3 };
Console.WriteLine("Rectangle Area: " + rectangle.CalculateArea());
Console.WriteLine("Circle Area: " + circle.CalculateArea());
}
}
추상 클래스 모범 사례
추상 클래스 모범 사례
다음은 몇 가지 모범 사례입니다.
- 상속해야 하는 공유 기능이 있을 때 추상 클래스를 사용하십시오.
- 추상 클래스의 역할을 명확하게 유지하고 불필요한 멤버를 추가하지 마십시오.
- 적절한 경우 추상 클래스를 인터페이스와 함께 사용하십시오.
팁: 추상 클래스는 파생 클래스를 위한 탄탄한 기반을 제공해야 합니다.
잘하셨습니다!
잘하셨습니다!
축하합니다! 공유 동작을 정의하고 파생 클래스 전체에 일관성을 적용하기 위해 추상 클래스를 사용하는 방법을 배웠습니다. 다음 수업에서는 C#의 정적 멤버와 메서드를 살펴보겠습니다. 계속 코딩해 보십시오!

자주 묻는 질문
“추상 클래스” 강의는 무료인가요?
네 — “추상 클래스” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 6개의 강의가 포함되어 있습니다.
“추상 클래스”에서 뭘 배우나요?
추상 클래스와 파생 클래스의 공통 구조를 만드는 역할을 살펴보세요 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
C# Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 6개 중 2번째 강의입니다.
“추상 클래스” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.