C# 클래스 상속

정용·2024년 6월 3일

파생 클래스 👩‍👦

C#에서 부모 클래스인 기준 클래스(Base Class)로부터 상속하여 새로운 파생 클래스(Derived Class)를 만들 수 있다.

상속 (inheritance)을 사용하게 되면 Base클래스의 데이터 및 메서드들을 (public 아니면 protected 멤버의 경우 ) 파생클래스를 사용할 수 있게 된다.

파생 클래스Base클래스로부터 물려받는 멤버들 외에 대개 자기 고유의 메서드와 데이터를 추가해서 사용하게 된다.

C#에서 파생클래스를 정의하기 위해선 클래스명 뒤에 Colon : 을 찍고 Base 클래스 명을 써주면 된다.

제약점은 C#에서는 파생클래스가 단 하나의 Base 클래스로부터 상속되어져야 한다는 것이다.

즉, 하나의 파생클래스는 2개 이상의 Base 클래스를 가질 수 없다. 🚫

예시로 Base클래스 (Animal)과 Dog Bird 파생클래스를 생성하는 코드를 작성해보겠다. 📝

public class Animal				//Base 클래스
{
	public class Name  { get  ; set ; }
    public int Age { get ; set ; }
}

public class Dog : Animal		//파생클래스 Dog : Animal
{
	public void HowOld( )
    {
    	Console.WriteLine("나이 : { 0 }", this.Age);		//Base클래스의 Age 속성을 사용
    }
}

public clss Bird : Animal
{
	public void Fly( )
    {
    	Console.WriteLine(" { 0 } 가 날다.", this.Name);
    }
}
  • 여기에서 this는 현재 객체를 가리키는 참조이다. this로 현재 객체의 속성이나 메서드에 접근할 수 있다.

추상클래스 💭

C#의 클래스명 앞에 abstract라는 키워드를 붙이는 경우가 있다.

이것을 추상클래스 Abstract Class라고 하는데, 이러한 추상 클래스로부터는 객체를 직접 생성할 수 없다. 🚫

즉, new를 이용해서 클래스 객체를 생성할 수 없다는 뜻이다.

또 다른 경우로는 추상 클래스 안에 클래스의 임의의 멤버 안에 abstract 키워드를 붙이는 경우가 있는데,

이것은 해당 멤버가 구현되지 않은거고, 추상 클래스로부터 파생되는 파생클래스에서 반드시 그 멤버를 구현을 해주어야 한다는 것이다.

파생 클래스에서 상속된 abstract 메서드를 구현하기 위해서는 override라는 C# 키워드를 사용하여 그 메서드를 새로 정의하면 된다.

이번에도 예시로 찬찬히 살펴보자 📝

public abstract class PureBase
{
	//abstract 키워드
    public abstract int GetFirst( );
    public abstract int GetNext( );
}

public class DerivedA : Purebase 
{
	private int no = 1;
    
    public override int GetFirst( )
    {
    	return no;
    
    }
    
    public override int GetNext( )
    {
    	return ++no;
    }
}
  • public class DerideA : PureBase > > > 'DerideA'클래스가 'PureBase'를 상속받는 것을 의미합니다.
  • private int no = 1; > > > no 는 DerideA의 인스턴스 변수로 초기값 1이다. 이 변수는 클래스 내부에서만 접근 가능하다.
    (private 접근 제한자)

한마디로 요약하면, PureBase 추상 클래스는 GetFirst와 GetNext 이 두개의 추상 메서드를 정의한다.
GetFirst 메서드는 no의 현재 값을 반환
GetNext 메서드는 no의 값을 1 증가시키고, 반환

이상 클래스 상속 끝❗

profile
예예

0개의 댓글