C# Practicing(상속, 가상 메서드)

2023. 10. 23. 18:15Game Develop/C# Programming

오늘은 클래스의 상속과, 가상 메서드에 대해서 알아보도록 하겠다.

 

클래스 상속은 부모 클래스의 데이터와 기능을 자식 클래스가 물려받는 것을 의미한다.
자식 클래스는 물려받은 데이터와 기능과 함게 자신만의 데이터와 기능도 사용할 수 있다.

 

다음은 자식클래스의 기본적인 형태이다.

public class 자식클래스 : 부모클래스
{
			데이터
	`		기능
}

 

이제 학생 클래스와 선생 클래스를 만들어 보겠다.

클래스를 만들 때 부모 클래스는 주로 더 일반적인 것들로 만든다.

예를들면, 학생과 선생은 사람이지만 사람을 학생, 선생이라고 볼 수 있을까?

아니다. 사람이 학생, 선생보다 더 일반적인 개념이기 때문이다.

 

따라서 우리는 먼저 부모 클래스가 될 사람 클래스부터 만들어주겠다

접근제어지시자 protected는 priavte과 기능적인 면에서 거의 동일하나, 자식클래스가 private은 참조할 수 없고, protected는 참조가능하다.

위의 내용은 저번부터 쭉 다뤘으니, Human 클래스는 이렇게 간단하게 만들어주도록 하겠다.

 

이제 학생 클래스를 만들어보자.

 

아서는 밥을 먹이고 싶고, 희찬이는 급식을 먹이고 싶으면 어떻게 해야할까?

이때 가상 메서드를 쓸 수 있다.

 

가상 메서드
메서드 반환 형식 앞에 virtual(가상의)을 붙여준다.
가상 메서드는 자식 클래스에서 재정의(override)를 할 수 있다.
가상 메서드는 실제 형식을 따라간다. 

 

빠른 이해를 돕기 위해 직접 코드로 작성해보자

아서는 밥을 먹고, 희찬이는 급식도 먹고 공부도 하는 것을 확인할 수 있다.

마지막으로 선생님 클래스를 작성하고 마치도록하겠다.

Teach() 메서드에서 이름을 가져와야한다. 하지만, name은 protected로 Main 함수에서는 접근할 수 없다. 따라서 우리는 메서드를 사용해서 name의 값을 받아와야한다. Human 클래스에 다음과 같은 메서드를 작성했다.

name의 값을 반환해주는 메서드이다.

실행 결과가 잘 나온것을 확인할 수 있다.

 

아서, 희찬, 흥민 셋 다 할 일을 다 했으므로 오늘 포스팅은 여기까지 하겠다.