C# - class

  • 클래스 개념

  • 클래스와 인스턴스

  • 필드, 메서드

  • 클래스 생성자 직접 new Knight() 로 객체를 만들어준 뒤에 knight 가 갖는 hp, attack 값을 명시적으로 지정해줘야하기때문에 자칫 실수로 안적는 상황이나 속성이 많아질수록 적기 귀찮은 상황이 온다. 그럴 때 사용하는 것이 생성자이다. 객체를 생성함과 동시에 속성값을 인자로 넘겨서 이 상황을 방지한다.

함수처럼 void 혹은 리턴타입을 지정해주는 등 앞에 키워드를 붙이면 안되고, class의 이름과 똑같이 지어줘야한다.

  • 클래스 상속

  • 클래스 내부에서 자기자신의 타입을 인스턴스로 갖는 경우.(자료구조-트리노드)

  • 클래스 형식 변환과 다형성

자식 클래스를 부모클래스로 변환하여 사용하는데는 크게 문제가 될 것이 없지만, 부모 클래스를 자식클래스로 변환한다면, 문제가 안생길 수동 있지만, 컴파일과정에서의 문제가 생길 수 있다.

부모 클래스를 자식 클래스로 변환하면서 발생하는 문제가 있는지 확인하는 방안 두가지가 있다. as와 is를 사용하는 방법이다. as 를 사용할 수 있으면 is도 사용가능하고, is를 사용할 수 있으면 as도 사용할 수 있다. 다만 as 를 사용하는 것이 권장된다.

  • as 를 사용했을 때 static void EnterGame(Player player) { Mage mage = (player as Mage); if (mage != null ) { mage.mp = 10; } }

  • is 를 사용했을 때 static void EnterGame(Player player) { bool isMage = (player is Mage); if (isMage) { Mage mage = (Mage)player; mage.mp = 10; } }

태그:

업데이트:

댓글남기기