C# 구조체,클래스(Struct, Class)

굥지·2024년 9월 26일
0

유니티 부트캠프

목록 보기
8/14
post-thumbnail

❓Class

멤버변수와 메소드로 구성되어있으며,
캐릭터가 할 수 있는 행동들을 의미한다(맞는다, 힐한다, 살아있는가, 먹는다 등)

❓Class 멤버

클래스에서 데이터와 동작을 나타낸다.
생성자, 소멸자, 상수, 필드, 메서드, 속성(프로퍼티),,,,등등으로 구성된다.

사용방법

class 클래스 이름
{
	// 데이터와 메소드
}

💻 예시 코드

// Cat의 청사진 //
class Cat  
{
	// 속성 = 클래스의 변수 = 필드(Field)
	public string Name;
   public string Color;
   
   // 기능 = 메소드
   public void Meow()
   {
   	Console.WriteLine("{0} : 야옹", Name);
   }
}

❓객체

클래스는 객체를 구현하기 위한 설계도로, new 연산자와 생성자를 이용해 객체를 생성한다.
객체의 멤버에 접근할때는 .연산자를 사용한다.


new 연산자 : 생성자를 호출해서 객체를 생성하는데 사용하는 연산자

public class Test : MonoBehaviour
{
    void Start()
    {
        Character charles = new Character("철수", 10); //객체 생성

        charles.Hit(15); //객체의 멤버(메서드)에 접근
        
        Debug.Log(charles.IsAlive());
    }
}
public class Character 
{ 
		//멤버 변수
    public string Name;
    public int Hp;
    
    public Character(string name, int hp) //매개변수를 포함한 생성자
    {
        Name = name;
        Hp = hp;
    }

    public void Hit(int damage) //메서드
    {
        Hp -= damage;
    }

    public bool IsAlive()
    {
        return Hp > 0;
    }

}

> 🖨 출력 결과

❓생성자

클래스의 이름과 동일한 이름을 가지며, 객체를 생성하는 역할로 객체를 인스턴스화할 때 호출되는 메서드로 반환타입을 갖지 않는다.


어떤 클래스가 만들어질때 처음 불려지는 것

public Character(string name, int hp) //생성자
{
    Name = name;
    Hp = hp;
}

제일 왼쪽에 Food라는 생성자가 존재하지만 생략된 것

즉, 기본 생성자는 생략되어도 작동한다.

아래 사진의 생성자가 있기 때문에 기본 생성자를 불러왔을때 오류가 생김

기본 생성자 public Charater(){}를 만들어주면 오류가 없어진다


❓struct

하나 이상의 변수들을 묶어서 그룹으로 만드는 자료형
데이터와 관련 기능을 캡슐화할 수 있는 값 형식이다.


클래스와 거의 동일한 구조이지만 상속이 불가능하다는 차이가 있다.

    struct HumanData
    {
        public string name;
        public float weight;
        public float height;
        public float footSize;
    }

    void Start()
    {
        HumanData charles = new HumanData();
        charles.name = "철수";
        charles.weight = 100f;
        charles.height = 180f;
        charles.footSize = 280f;
        Debug.Log(charles); //Struct1+HumanData 출력됨
    }

위 코드의 결과는 아래와 같다.

>🖨 charles.name을 출력했을때 출력 결과

0개의 댓글

관련 채용 정보