C# Override

굥지·2024년 9월 27일
0

유니티 부트캠프

목록 보기
14/14
post-thumbnail

❓Override

부모 클래스에서 정의된 함수를 자식 클래스에서 재정의하고 싶다면, 부모 클래스에서 가상 함수로 정의하고, 자식 클래스에서 오버라이딩 해주면 된다.

부모 클래스

public class Human : MonoBehaviour
{
    protected string humanName; 
    protected int humanAge;

    protected virtual void Info() // 가상함수 선언(부모 클래스에서도 완성된 함수 형태로 선언해야 함) 
    {
        print("나는 인간입니다."); 
    }
}

protected로 선언된 변수들은 해당 클래스 또는 상속받은 자식 클래스에서만 접근 가능

virtual 은 재정의가 될 수 있음을 의미한다

자식 클래스

public class Student :Human
{
    string schoolName;
    
    protected override void Info() // 오버라이드, 재정의
    {
        //base.Info(); //부모 클래스의 Info()가 실행된다는 의미
        print("나는 학생입니다.");
    }
}

🖨결과

Info()메서드는 기본적으로 “나는 인간입니다.”를 출력하지만, base.Info()를 호출하게 되면 부모 클래스인 “나는 인간입니다.”를 출력하고, "나는 학생입니다."가 출력된다.

출처 : https://wikidocs.net/124904

❓new

new를 썼을때 이전에 있는 함수도 상관 없이 자기가 새로 만들겠다라는 의미
이름만 같고 다른 함수
기존(부모)에 있던 동일 이름의 함수를 무시하고, 완전 새로운 함수로 선언

🖨결과

같은 이름의 함수를 호출했을때

파라미터가 다르면 부를 때 이름이 같더라도 어떤 함수를 불렀는지 구분할 수 있다.

💻코드

맨 오른쪽(아래)의 코드를 보면 같은 함수를 호출하고 있지만 파라미터가 다른 모습을 볼 수 있다.

🖨결과

0개의 댓글

관련 채용 정보