클래스와 오브젝트 (retr0 강의노트)

Se0ng_1l·2022년 7월 21일
0
post-thumbnail

객체 지향 언어의 특성

오브젝트
자기 자신을 스스로 챙길 수 있다.
하나의 온전한 단위로 존재한다.
실존하는 세상에 산다.
하나의 원본에서 파생 되어도, 서로 구분 가능하다.

클래스
이상적인 세계에 존재하는 단 하나의 기준
실제로는 존재하지 않는다.
가장 중요한 특성만 개략적으로 알려준다.
구체적인 수치가 없다.

private : 외부에서 class에 접근이 불가능하게 한다.
class의 멤버변수 혹은 멤버함수는 기본적으로 private처리가 되어있다.
public : 접근지정자, 유니티 에디터 혹은 class외부에서 접근이 가능하도록 한다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HelloClass : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Animal jack = new Animal(); // 객체 생성
        jack.name = "JACK";
        jack.sound = "Bark";
        jack.weight = 4.5f;

        Animal nate = new Animal();
        nate.name = "NATE";
        nate.sound = "Nyan";
        nate.weight = 1.2f;

        Animal annie = new Animal();
        annie.name = "ANNIE";
        annie.sound = "Wee";
        annie.weight = 0.8f;
        
        nate = jack;

        nate.name = "JIMMY";
        nate.sound = "Cheese";
        
        Debug.Log(jack.name);
        Debug.Log(jack.sound);
        
        Debug.Log(nate.name);
        Debug.Log(nate.sound);
        
        Debug.Log(annie.name);
        Debug.Log(annie.sound);
        
    }
}
public class Animal
{
    public string name;
    public string sound;
    public float weight;
}

📌중요 개념

위 코드 nate = jack;
Call by reference, 가져와서 쓴다는 개념
직관적으로 natejack의 정보가 단순 복사되지 않는다.
nate가 가진 정보가 사라지게 된다.
JACK를 가리키는 변수는 jack와 nate 두개가 된다.
nateGarbage Collection이 되어 사라진다.
변수는 단지 가리키는 화살표

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Jumper : MonoBehaviour
{
    public Rigidbody rb; // 실제 에디터에 오브젝트의 리지드바디를 가리키는 참조자
    void Start()
    {
        rb.AddForce(0, 500, 0);
    }
}
profile
치타가 되고 싶은 취준생

0개의 댓글