Chapter 5-2. 객체 지향 : 생성자, static
카테고리: C Sharp
태그: C Sharp Programming
인프런에 있는 Rookiss님의 강의 Part1: C# 기초 프로그래밍 입문 를 듣고 정리한 필기입니다. 😀
👱♀️ 생성자
객체를
new
로 생성함과 동시에 멤버 값들을 원하는대로 초기화하고 싶을 때 생성자 호출
- 클래스 이름과 같아야 함
- 리턴타입, 매개변수 ❌
- 접근 지정자 ⭕
public Knight()
{
hp = 100;
attack = 10;
}
public Knight(int hp) : this()
{
this.hp = hp;
}
- 생성자 이름 옆에
: this()
👉 ‘디폴트 생성자 호출해줘’ 라는 의미- 따라서
this.hp = hp
를 실행하기 전에Knight()
를 호출하여hp = 100
와attack = 10
를 먼저 실행하게 된다. - 따라서 자연스럽게
Knight(int hp)
생성자에서hp
값만 설정헀어도attack
은 10 으로 설정이 미리 된다.
- 따라서
👱♀️ static
static
이 아닌 일반 멤버들- 종속된 객체 인스턴스들 마다 메모리가 별개다.
- 같은 클래스 타입이라도 객체들은 서로 속성값도 다를 수 있으며 별개의 존재이다.
static
이 아닌 일반 멤버 변수, 함수들은 객체에 종속된다.
- 종속된 객체 인스턴스들 마다 메모리가 별개다.
static
멤버 변수, 멤버 함수static
인 멤버 메모리를 같은 타입의 모든 객체들이 공유 한다.- 따라서 오직 해당 멤버가 전체 메모리 상에서 단 1 개만 존재한다.
- 객체에 종속되지 않는다.
- 따라서 객체 생성 후 객체 이름으로 호출하는 것이 아닌 클래스 이름으로 호출한다.
- 객체 생성할 필요가 없다.
static
함수 내에선 특정 일반 객체 멤버를 사용할 수 없다.- 공용 함수니까 애당초 어떤 객체의 멤버를 사용해야 하는지 알 수 없기 때문에
- 그렇다고 아예 못 쓴다는 것은 아니고 함수 바깥의 어떤 특정 일반 객체 멤버를 사용할 수 없다는 것 뿐이다! 예를 들면
this
같이… 예를 들어static
함수 내부에서 아예 새롭게 객체를 만들고 이를 리턴하는 작업은 가능하다.static public void Test() { this.id = 23; // ❌ 에러! 특정 객체 멤버는 사용할 수 없음 hp = 100; // ❌ 에러! 특정 객체 멤버는 사용할 수 없음 } static public Knight CreateKnight() // 문제 없음. 가능. ⭕ { Knight knight = new Knight(); knight.hp = 100; knight.attack = 1; return knight; }
static
함수 내에선 일반 멤버는 사용할 수 없고static
멤버 변수만 사용할 수 있다.
Console
클래스에 있는 static 함수인WriteLine()
👉Console.WriteLine("a")
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기