C# 클래스 3
본문 바로가기
  • 게임 개발자가 되고싶은 구구
게임 개발 공부/C#

C# 클래스 3

by gugu99 2021. 12. 10.
반응형

안녕하세요!

오늘도 게임개발자가 되기위해 공부하고 있는 구구입니다.

오늘도 C#의 클래스에 대해 알아보도록 하겠습니다.


  • 상속과 다형성
  • 클래스 상속(IS-A 관계)

- 부모 클래스 : base, parent, 상위, super

- 자식 클래스 : derived, child, 파생, sub

- 클래스의 재사용

 

 

 

※ 접근 지정자 protected = 상속된 class만 참조해서 쓸수있도록 함.

 

C#-상속-부모클래스-부모-자식클래스-자식-base-parent-상위-super-derived-child-파생-sub-protected

우선 Super라는 class가 있고 그 class의 멤버변수는 a입니다.(protected)

그 다음 Sub:Super는 Super라는 class의 자식클래스라는 뜻입니다.(class명은 Sub입니다.)

int b의 경우 private입니다.(아무언급이 없었기 때문)

이때 a의 경우 Sub는 Super의 자식클래스이기 때문에 a를 쓸 수 있습니다.

 

 

C#-상속-부모클래스-부모-자식클래스-자식-base-parent-상위-super-derived-child-파생-sub-protected


  • 클래스 상속(생성자, 소멸자)

- 상속에서 생성자 함수와 소멸자 함수

 

 

C#-상속-부모클래스-부모-자식클래스-자식-base-생성자-소멸자
C#-상속-부모클래스-부모-자식클래스-자식-base-생성자-소멸자

여기서 Super는 주석처리했는데 Sub class의 생성자와 소멸자를 확인하기 위해서 입니다.

 

 

 

 

C#-상속-부모클래스-부모-자식클래스-자식-base-생성자-소멸자

Sub class는 생성되기 전 부모클래스가 먼저 생성되고 그 다음 Sub class가 생성됩니다.

반대로 소멸될 때는 Sub class가 먼저 소멸되고 Super class가 생성됩니다.

만약 Super class를 new를 통한 객체생성을 하게되면 Super class의 생성자와 소멸자만 나오게 될 것입니다.


 

  1. base키워드

해당 class의 상위 class를 지칭하는 키워드

base.항목 = 부모 클래스의 public, protected 로 지정된 항목들을 호출

 

C#-상속-부모클래스-부모-자식클래스-자식-base-생성자-소멸자
C#-상속-부모클래스-부모-자식클래스-자식-base-생성자-소멸자

 

여기서 다른건 다 괜찮지만

 

public Sub(int num, string name):base(num)

 

부분이 이해하시기 어려울 수 있습니다. 우선 이전 코딩에서 sub class의 생성자 호출을 할 때는 우선적으로 부모 클래스의 생성자가 먼저 호출된다는 사실을 알고 있으실 겁니다. 그런데 부모 클래스의 생성자가 파라미터가 없을때는 base(num)이라는 코드가 없는게 맞지만 생성자의 파라미터가 있으므로 sub class도 이에 맞춰 따라가야 합니다.

 

(즉, super class의 생성자의 형식을 따라서 sub class의 생성자가 생성되야 하므로 super class의 생성자 형식을 따라간 sub class의 생성자가 있어야합니다.)

 

 

 

 

 

몇가지 예시를 보여드리겠습니다.

C#-상속-부모클래스-부모-자식클래스-자식-base-생성자-소멸자

위 코딩의 경우는 부모 클래스에서는 파라미터가 없는 생성자만 존재하는데 sub 클래스에서 base(num)을 추가함으로서 부모 클래스의 생성자 중 num이라는 파라미터를 가진 생성자를 호출하려고 하다보니 생긴 오류입니다.

 

 

C#-상속-부모클래스-부모-자식클래스-자식-base-생성자-소멸자

위 코딩은 부모클래스의 생성자를 2개를 만들었습니다. 하나는 파라미터가 없고 다른 하나는 int num이라는 파라미터가 있습니다. 따라서 sub 클래스에서는 입맛에 따라 :base(num)을 추가하여 sub 클래스의 생성자를 호출해도 되고 추가하지 않고 위의 경우처럼 그냥 호출해도 괜찮습니다.

 

 

 

 


해당 내용은 이해하기 어려우실수도 있는데 반복적으로 보시고 코딩도 직접 바꿔보면 좀더 이해가 편하실 수 있습니다.

결과를 확인해보겠습니다. base.name과 this.name 은 각각 super class, sub class의 name에 각각 저장된 변수를 출력하는 것이고 num의 경우는 생성자를 받을때 같이 받았기 때문에 num=26입니다.

C#-상속-부모클래스-부모-자식클래스-자식-base-생성자-소멸자

 


 

 

 

 

 

 

오늘은 여기까지 하도록 하겠습니다.

 

 

 

반응형

'게임 개발 공부 > C#' 카테고리의 다른 글

C# 클래스 5  (0) 2021.12.12
C# 클래스 4  (0) 2021.12.11
C# 클래스 2  (0) 2021.12.09
C# 클래스 1  (0) 2021.12.08
C# 함수& 배열 문제 풀이 2  (0) 2021.12.07

댓글