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

C# 클래스 4

by gugu99 2021. 12. 11.
반응형

안녕하세요!

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

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

어제 base 키워드까지 알아봤는데 그 다음 is, as 키워드에 대해서도 알아보도록 하겠습니다.

그 전에 배웠던 내용들이 헷갈릴 수 있기 때문에 한번 가볍게 정리하고 시작하도록 하겠습니다.


  • 클래스의 정의와 활용 정리

클래스 = 객체를 정의해 놓은 것, 객체를 생성하기 위한 설계도

 

객체 = 클래스에 정의된 내용이 메모리에 생성된 것

 

인스턴스화(instantiate)​ = 클래스로부터 객체를 만드는 과정

 

인스턴스(instance) = 어떤 클래스로부터 만들어진 객체

 


즉 클래스로 객체를 만들게 되는 과정을 인스턴스화, 만들어진 객체가 인스턴스가 됩니다.

그리고 생성할 때 new 키워드를 이용해서 생성할 수 있습니다.

 

ex) AA(클래스명) aa(참조변수, 객체명) = new AA()(생성자);

(aa에 객체의 주소를 저장 -> class가 call by reference인 이유)

 

 

생성자 = 객체(인스턴스)가 생성될 때 호출되는 인스턴스 초기화 함수 

 

this = 객체가 자기 자신을 가리키고 싶을 때 사용

 

static = 멤버 변수or 함수가 인스턴스에 소속되는 것이 아닌 클래스 자체에 소속되도록 지정하는 한정자

  1. 정적 변수는 프로그램 전체에 걸쳐서 공유해야하는 변수가 있을시 사용.
  2. 정적 함수는 별도의 인스턴스 생성없이 호출할 수 있도록 사용.

 

상속 = 다른 클래스에 정의된 멤버들을 물려받을 수 있음.

 

자식 클래스 : 부모 클래스 = 상속

 

base.멤버 = 자식 클래스 안에서 부모 클래스의 멤버에 접근할 때 사용

 

base() = 자식클래스에 있는 생성자에서 부모클래스를 초기화 해야될 때 사용


  1. is 키워드

- 객체의 형식 검사

- bool 리턴(branch에서 사용가능)

 

 

  1. as 키워드

- 형식 변환

- null 리턴(예외처리 가능)

 

1. BB copyBB = bb as BB;

2. BB copyBB = (BB)bb;

 

둘 다 형 변환 가능

 

1번. as를 사용해서 bb를 BB로 형변환 가능하면 형변환이 그냥 되고 만약 형변환이 안된다면 null 반환

2번 as를 사용해서 bb를 BB로 형변환 가능하면 형변환이 그냥 되고 만약 형변환이 안된다면 오류 발생

 

따라서 클래스에서 형변환을 할때 as를 이용(예외처리가 가능해 지기 때문)

 

 

 

C#-객체-클래스-is-as-bool-형식변환-null-형변환
C#-객체-클래스-is-as-bool-형식변환-null-형변환
C#-객체-클래스-is-as-bool-형식변환-null-형변환

여기서 중요한 점은 

 

Base aa = new AA();

 

즉, 부모클래스를 선언했는데 객체를 만들 때는 자식클래스로 만들었다는 점입니다.

이렇게 되면 Base타입의 참조변수 aa는 Base에 있는 함수는 사용가능하지만 AA 클래스(자식 클래스)의 멤버에는 접근이 불가능합니다.(클래스는 Base 이므로 AA 클래스는 못씁니다)

 

그리고 그 다음 형변환이 나오는데

 

BB copyBB = bb as BB;

 

위 경우는 bb를 BB로 형변환 하는데 bb를 보면 먼저 Base 클래스이지만 객체는 BB클래스입니다.

이런 경우는 객체가 BB 클래스이기 때문에 BB로 형변환이 가능합니다.

 

 

C#-객체-클래스-is-as-bool-형식변환-null-형변환


 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

반응형

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

C# 클래스 6  (0) 2021.12.13
C# 클래스 5  (0) 2021.12.12
C# 클래스 3  (0) 2021.12.10
C# 클래스 2  (0) 2021.12.09
C# 클래스 1  (0) 2021.12.08

댓글