C# 프로그래밍 - 클래스 상속(Inheritance)

반응형

C# 프로그래밍 - 클래스 상속(Inheritance)

클래스 상속을 사용하여 하나의 클래스가 다른 클래스의 멤버(필드, 속성, 메서드)를 상속받을수있습니다.

기본 클래스는 상속의 기반이 되는 클래스로 베이스 클래스(base class) 또는 부모 클래스(parent class) 라고합니다.

파생 클래스는 상속을 받는 클래스로 파생 클래스(derived class) 또는 자식 클래스(child class) 라고합니다.

기본 클래스에서 파생 클래스로 상속이 이루어지면 파생 클래스에서 기본 클래스의 멤버(필드, 속성, 메소드)를 사용할수있습니다.

 

상속의 선언

상속은 클래스 선언 시에 다음과 같이 콜론(:)을 사용합니다.

 

class DerivedClass : BaseClass
{
 
}

 

 

클래스 상속 예시

Dog 클래스는 Animal 클래스를 상속받습니다. Dog 클래스는 Animal 클래스 파생 클래스(derived class) 이고 Animal 클래스는 Dog 클래스 베이스 클래스(base class) 입니다.

 

class Animal
{
  
}

class Dog : Animal
{
  

}

 

멤버 상속

파생 클래스는 기본 클래스의 public 및 protected 멤버(필드, 속성, 메서드)를 상속받습니다(private 멤버는 상속되지 않습니다) 파생 클래스에서 상속된 멤버를 직접 사용하거나 메서드를 재정의(override)하여 새로운 동작을 정의할 수 있습니다.

 

Dog 클래스에서 Animal 클래스의 필드를 직접 사용합니다.

 

class Animal
{
    public int ageAnimal;

}


class Dog : Animal
{
    public int nameDog;

    Console.WriteLine($"이름: {nameDog}, 나이: {ageAnimal}");
   
}

 

 

메서드 오버라이드

파생 클래스에서 기본 클래스의 메서드를 새로 정의하는 것을 메서드 오버라이드(override)라고 합니다.

기본 클래스의 메서드는 virtual 키워드를 사용하여 정의하고 파생 클래스에서 override 키워드를 사용하며 메서드를 재정의합니다. 재정의하는 메서드의 이름을 기본 클래스의 메서드의 이름과 동일하게 설정합니다.

 

클래스 상속과 메서드 오버라이드 예시

Animal 클래스에서 Eat 함수를 정의하고 Dog 클래스에서 Eat 메서드를 재정의하고 Bark 함수를 정의합니다.

 

class Animal
{
    public virtual Eat()
    {
        Console.WriteLine("동물이 먹습니다.");
    }
}

 

class Dog : Animal
{
    public override void Eat()
    {
        Console.WriteLine("개가 먹습니다.");
    }

 

    public void Bark()
    {
        Console.WriteLine("개가 짖습니다.");
    }


}

 

class Program
{
    static void Main()
    {
        Dog myDog = new Dog();
        myDog.Eat();  // "개가 먹습니다." 
        myDog.Bark(); // "개가 짖습니다." 
    }
}

 

 

반응형

댓글

Designed by JB FACTORY