본문 바로가기
카테고리 없음

C# 객체와 클래스, 인스턴스, 상속 완벽 정리!

by tasiklee 2025. 2. 12.

안녕하세요! 이번 포스팅에서는 C#의 객체 지향 프로그래밍(OOP)의 핵심 개념인 객체, 클래스, 인스턴스, 그리고 상속에 대해 자세히 알아보겠습니다. C#을 처음 접하는 분들이나 객체 지향 개념을 확실하게 이해하고 싶은 분들은 꼭 끝까지 읽어보세요!


객체(Object)란?

객체(Object)는 현실 세계의 사물이나 개념을 프로그래밍적으로 표현한 것입니다. 쉽게 말해, 우리가 보는 자동차, 강아지, 책 같은 것들을 프로그래밍 세계에서 구현할 수 있도록 만든 것이 바로 객체입니다.

객체는 **속성(데이터)과 동작(메서드)**을 가질 수 있습니다. 예를 들어, 자동차 객체는 색상, 브랜드 같은 속성과, 주행, 정지 같은 동작을 가질 수 있죠.

클래스(Class)란?

클래스(Class)는 **객체를 만들기 위한 청사진(설계도)**입니다. 객체는 클래스를 기반으로 생성되며, 클래스를 통해 객체의 속성과 동작을 정의할 수 있습니다.

클래스 선언 방법

C#에서 클래스를 선언하는 방법은 다음과 같습니다.

class Car
{
    // 속성 (필드)
    public string Color;
    public string Brand;

    // 동작 (메서드)
    public void Drive()
    {
        Console.WriteLine("자동차가 달립니다.");
    }
}

위 예제에서 Car 클래스는 ColorBrand 속성을 가지고 있으며, Drive()라는 메서드를 가지고 있습니다.

인스턴스(Instance)란?

클래스는 그 자체로는 실행되지 않고, 실제 메모리에 생성된 객체를 인스턴스라고 합니다.

클래스에서 객체를 생성하려면 new 키워드를 사용합니다.

Car myCar = new Car();
myCar.Color = "Red";
myCar.Brand = "Hyundai";
myCar.Drive(); // 출력: 자동차가 달립니다.

위 코드에서 myCarCar 클래스의 인스턴스입니다. 즉, myCarCar 클래스를 기반으로 생성된 객체이며, 클래스에서 정의한 속성과 메서드를 사용할 수 있습니다.

상속(Inheritance)이란?

상속(Inheritance)은 기존 클래스의 기능을 그대로 물려받아 새로운 클래스를 만드는 것입니다. 상속을 사용하면 코드의 재사용성을 높이고, 유지보수를 쉽게 할 수 있습니다.

상속 구현 방법

C#에서 클래스 상속은 : 기호를 사용하여 선언합니다.

class Vehicle
{
    public int Speed;
    
    public void Move()
    {
        Console.WriteLine("이동 중...");
    }
}

class Car : Vehicle
{
    public string Brand;
}

위 코드에서 Car 클래스는 Vehicle 클래스를 상속받았습니다. 따라서 Car 클래스는 Vehicle 클래스의 Speed 속성과 Move() 메서드를 그대로 사용할 수 있습니다.

Car myCar = new Car();
myCar.Speed = 100;
myCar.Move(); // 출력: 이동 중...

부모 클래스의 생성자 호출

부모 클래스의 생성자가 있다면, 자식 클래스에서 이를 호출해야 할 수도 있습니다. 이때 base 키워드를 사용합니다.

class Vehicle
{
    public string Name;

    public Vehicle(string name)
    {
        Name = name;
        Console.WriteLine($"{name} 차량이 생성되었습니다.");
    }
}

class Car : Vehicle
{
    public Car(string name) : base(name)
    {
        Console.WriteLine("자동차 객체 생성 완료!");
    }
}

Car myCar = new Car("Hyundai");
// 출력: Hyundai 차량이 생성되었습니다.
// 출력: 자동차 객체 생성 완료!

Car 클래스가 생성될 때 부모 클래스 Vehicle의 생성자가 먼저 실행되는 것을 볼 수 있습니다.

메서드 오버라이딩 (Overriding)

자식 클래스에서 부모 클래스의 메서드를 재정의(Overriding) 할 수도 있습니다.

class Animal
{
    public virtual void Speak()
    {
        Console.WriteLine("동물이 소리를 냅니다.");
    }
}

class Dog : Animal
{
    public override void Speak()
    {
        Console.WriteLine("멍멍!");
    }
}

Dog myDog = new Dog();
myDog.Speak(); // 출력: 멍멍!

virtual 키워드로 부모 메서드를 선언하고, 자식 클래스에서 override 키워드를 사용하여 재정의합니다.

정리

  • 객체(Object): 현실 세계의 사물을 프로그래밍적으로 표현한 것
  • 클래스(Class): 객체를 만들기 위한 청사진(설계도)
  • 인스턴스(Instance): 클래스를 기반으로 메모리에 생성된 실제 객체
  • 상속(Inheritance): 기존 클래스를 확장하여 새로운 클래스를 만드는 것

이제 C#에서 객체와 클래스, 인스턴스, 상속 개념을 이해하셨을 겁니다! 😊

궁금한 점이 있다면 댓글로 남겨주세요! 👍