반응형
상속 (Inheritance)
상속은 한 클래스가 다른 클래스로부터 속성과 메서드를 물려받는 기능입니다. 이를 통해 코드 재사용성을 높이고, 공통된 기능을 기반으로 확장할 수 있습니다.
상속 예시
public class Animal
{
public string Name { get; set; }
public void Eat()
{
Console.WriteLine($"{Name} is eating.");
}
}
public class Dog : Animal
{
public void Bark()
{
Console.WriteLine($"{Name} is barking.");
}
}
class Program
{
static void Main()
{
Dog dog = new Dog();
dog.Name = "Buddy";
dog.Eat(); // 상속받은 메서드
dog.Bark(); // Dog 클래스의 메서드
}
}
Dog 클래스는 Animal 클래스를 상속하여, Eat 메서드를 상속받고 Bark 메서드를 추가합니다.
캡슐화 (Encapsulation)
캡슐화는 객체의 속성과 메서드를 하나의 단위로 묶고, 외부에서 직접 접근할 수 없도록 보호하는 기법입니다. 이를 통해 클래스의 내부 구현을 숨기고, 인터페이스를 통해 접근할 수 있게 합니다.
캡슐화 예시
public class BankAccount
{
private decimal balance;
public void Deposit(decimal amount)
{
if (amount > 0)
{
balance += amount;
Console.WriteLine($"{amount} 원이 입금되었습니다.");
}
}
public void Withdraw(decimal amount)
{
if (amount <= balance)
{
balance -= amount;
Console.WriteLine($"{amount} 원이 출금되었습니다.");
}
else
{
Console.WriteLine("잔액이 부족합니다.");
}
}
public decimal GetBalance()
{
return balance;
}
}
class Program
{
static void Main()
{
BankAccount account = new BankAccount();
account.Deposit(1000);
account.Withdraw(500);
Console.WriteLine($"현재 잔액: {account.GetBalance()} 원");
}
}
BankAccount 클래스에서는 balance 필드를 private로 선언하여 외부에서 직접 접근할 수 없게 하고, 메서드를 통해 안전하게 조작할 수 있습니다.
다형성 (Polymorphism)
다형성은 동일한 메서드나 연산자가 여러 다른 형태로 동작할 수 있게 하는 기능입니다. C#에서는 메서드 오버로딩과 메서드 오버라이딩을 통해 다형성을 구현할 수 있습니다.
다형성 예시 (메서드 오버라이딩)
public class Animal
{
public virtual void Speak()
{
Console.WriteLine("Animal makes a sound");
}
}
public class Dog : Animal
{
public override void Speak()
{
Console.WriteLine("Dog barks");
}
}
public class Cat : Animal
{
public override void Speak()
{
Console.WriteLine("Cat meows");
}
}
class Program
{
static void Main()
{
Animal animal1 = new Dog();
Animal animal2 = new Cat();
animal1.Speak(); // Dog barks
animal2.Speak(); // Cat meows
}
}
Speak 메서드는 virtual로 정의되어 있으며, 이를 자식 클래스인 Dog와 Cat에서 오버라이딩하여 각기 다른 동작을 구현합니다.
abstract, sealed, virtual, override
abstract: 추상 클래스나 메서드를 정의할 때 사용됩니다. 추상 메서드는 구현되지 않으며, 자식 클래스에서 구현해야 합니다.
public abstract class Animal
{
public abstract void Speak();
}
- sealed: 클래스나 메서드의 상속을 막을 때 사용됩니다.
public sealed class FinalClass
{
// 이 클래스는 더 이상 상속될 수 없습니다.
}
반응형
'Programming' 카테고리의 다른 글
| C# 델리게이트와 이벤트 (0) | 2025.12.10 |
|---|---|
| C# 컬렉션과 제네릭 (0) | 2025.12.09 |
| C# 클래스와 객체 (0) | 2025.12.07 |
| C# 인터페이스와 추상 클래스 (0) | 2025.12.06 |
| C# 메서드와 매개변수 (0) | 2025.12.05 |