728x90
반응형
객체지향 고급 개념 익히기
C#은 객체지향 언어이기 때문에 코드 재사용성과 유연한 설계가 중요합니다.
그 핵심이 되는 개념이 바로 상속(Inheritance) 과 인터페이스(Interface) 입니다.
이번 글에서는 두 개념의 차이와 사용법을 쉽게 정리하고, 오버라이딩, 오버로딩 개념도 함께 설명합니다.
1. 상속 (Inheritance)
개념
상속은 기존 클래스(부모)의 기능을 물려받아 새로운 클래스(자식)를 만드는 것입니다.
공통 코드를 재사용하고, 확장할 수 있어 유용합니다.
예제
class Animal
{
public void Eat()
{
Console.WriteLine("먹는다");
}
}
class Dog : Animal
{
public void Bark()
{
Console.WriteLine("멍멍!");
}
}
Dog d = new Dog();
d.Eat(); // 부모 클래스 메서드
$d.Bark(); // 자식 클래스 메서드
protected
- protected 키워드를 사용하면, 자식 클래스에서 접근 가능한 변수/메서드를 만들 수 있습니다.
class Animal
{
protected string species = "동물";
}
class Cat : Animal
{
public void PrintSpecies()
{
Console.WriteLine(species);
}
}
2. 인터페이스 (Interface)
개념
인터페이스는 **클래스가 반드시 구현해야 할 동작의 명세(계약)**를 정의하는 구조입니다.
- 다중 상속이 가능한 형태 (C# 클래스는 다중 상속 불가)
- 주로 기능 분리, 유연한 설계, 테스트 용이성을 위해 사용
정의와 구현
interface IFlyable
{
void Fly();
}
class Bird : IFlyable
{
public void Fly()
{
Console.WriteLine("날개로 난다");
}
}
다중 인터페이스 구현
interface IFlyable { void Fly(); }
interface ISwimmable { void Swim(); }
class Duck : IFlyable, ISwimmable
{
public void Fly() { Console.WriteLine("훨훨"); }
public void Swim() { Console.WriteLine("첨벙첨벙"); }
}
3. 오버라이딩 vs 오버로딩
오버라이딩 (Overriding)
- 부모 클래스의 메서드를 재정의하는 것
- virtual(부모) + override(자식) 키워드 사용
class Animal
{
public virtual void Speak()
{
Console.WriteLine("...소리");
}
}
class Dog : Animal
{
public override void Speak()
{
Console.WriteLine("멍멍");
}
}
오버로딩 (Overloading)
- 메서드 이름은 같지만, 매개변수가 다른 여러 버전 정의 가능
class Calculator
{
public int Add(int a, int b) => a + b;
public double Add(double a, double b) => a + b;
public int Add(int a, int b, int c) => a + b + c;
}
이번 글에서는 C# 객체지향 개념 중 중요한 고급 주제인 상속, 인터페이스, 오버라이딩과 오버로딩을 정리했습니다.
- 상속: 기존 클래스의 기능을 물려받아 확장
- 인터페이스: 기능 명세만 정의하고 구현은 클래스가 담당
- 오버라이딩: 부모 메서드 재정의, 오버로딩: 같은 이름 다른 매개변수
728x90
반응형
'개발이야기' 카테고리의 다른 글
[C#] 예외 처리와 파일 입출력 완벽 가이드 (0) | 2025.04.17 |
---|---|
[C#] 컬렉션과 LINQ 완전 정리 (0) | 2025.04.17 |
[C#] 메서드와 클래스 (0) | 2025.04.17 |
[C#] 문법 기초 정리 1 (0) | 2025.04.17 |
[C#] 완전 입문 가이드 (쌩초보 가이드) (4) | 2025.04.17 |