본문 바로가기
카테고리 없음

[코딩일기] C# abstract(추상클래스)

by mania2321 2024. 7. 24.

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

public abstract class Animal : MonoBehaviour        // 조상클래스. abstract 메소드가 하나라도 존재한다면, abstract class 가 됨. 하지만 abstract class라 하더라도 그 안에 있는 모든 메소드가 추상 메소드여야 하는건 아니다. 
                                                    // 구현되어 있는 메소드가 있어도 아무 상관 없다.
                                                    // 하지만 추상 메소드가 하나라도 존재한다면, 그 해당 클래스는 추상 클래스다. 
                                                    // 추상 클래스는 상속 받아서 구현해줘야 쓸 수 있다.
                                                    // 추상클래스의 장점 : 공통점이 있는 '클래스의 조상'을 만들 수 있다. 조상 클래스(?ㅋㅋ 보통 'base클래스' 라고 함)가 구체적인 실현방법이 없더라도 일단 조상 클래스를 하나 만들어 놓고 
                                                    // 상속받는 자손들을 만들면, 조상 클래스 하나만 바꾸면 자손들도 한꺼번에 바뀌기 때문에 처리가 수월함.
{
    public abstract void Fly();

    public void Introduce()
    {
        Debug.Log("안녕하세요, 동물입니다.");
    }
}

 

=========================================================

 

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

public class Bug : Animal    // Animal을 상속받는 자식 클래스 1
{
    public override void Fly()
    {
        Debug.Log("위잉위잉");
    }
}

 

=========================================================

 

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

public class Bird : Animal    // Animal을 상속받는 자식 클래스 2
{
    public override void Fly()            // 추상 클래스를 구현할 때는 override 개념이므로, 해당 메소드에 'public override void - ' 이런 식으로 구현한다.
    {
        Debug.Log("푸드덕 푸드덕");
    }
}

 

=========================================================

 

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

public class HelloWorld : MonoBehaviour
{
    private void Start()
    {
        Bug dragonFly = new Bug();
        dragonFly.Fly();

        Bird sparrow = new Bird();
        sparrow.Fly();

        Animal someAnimal = new Bug();      // Bird와 Bug는 둘 다 Animal을 상속받은 것이기 때문에, 이런 식으로도 Bug를 넣을 수 있다. 물론, 새도 마찬가지.
        someAnimal.Fly();                   // 이렇게 구현하면, 만약 Bug라면 '위잉위잉' 이, Bird라면 '푸드덕 푸드덕' 이 적용됨. 
    }
    
}

댓글