1. 인터페이스 : 다중 상속을 구현하게 하는 기술. 반드시 사전에 정의된 추상메소드와 상수만을 가진다.
인터페이스란 객체와 객체 사이에서 일어나는 매개이다. 모든 기능을 추상화로 정의한 상태로 선언만 가능하다.
Player라는 클래스를 인터페이스 IDamageable을 상속받고 유니티에서 제공하는 MonoBehaviour를 상속받아 다중상속을 한 형태이다.
TakeDamage 메서드는 인터페이스에서 정의되며 Player클래스에서 구현된다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//인터페이스 정의
public interface IDamageable
{
void TakeDamage(int damage);
}
public class Player : MonoBehaviour,IDamageable
{
public int hp = 100;
//IDamageable 인터페이스 함수 구현
public void TakeDamage(int damage)
{
hp -= damage;
Debug.Log($"플레이어가 {damage}를 입혔다. 현재 체력은: {hp}");
}
void Update()
{
if(Input.GetKeyDown(KeyCode.K))
{
TakeDamage(10);
}
}
}
2. 추상클래스 : 일반 클래스와 유사하나 하나 이상의 추상 메서드를 포함하고 객체를 직접 생성할 수 없는 클래스
Enemy는 추상 클래스이며 Attack은 추상 메서드이다. Goblin, Orc 클래스가 Enemy 추상 클래스를 상속하고 Attack 함수로 공격을 구현한다.
Enemy 클래스를 상속하는 다른 적 캐릭터를 만들 때 Attack 함수를 반드시 구현해야 한다.
using UnityEngine;
// 추상 클래스 정의
public abstract class Enemy : MonoBehaviour
{
public int health;
// 추상 메서드 정의
public abstract void Attack();
}
// Goblin 클래스는 Enemy 추상 클래스를 상속합니다.
public class Goblin : Enemy
{
// Attack 메서드를 구현
public override void Attack()
{
Debug.Log("고블린 공격.");
}
}
// Orc 클래스도 Enemy 추상 클래스를 상속합니다.
public class Orc : Enemy
{
// Attack 메서드를 구현
public override void Attack()
{
Debug.Log("오크 공격");
}
}
정리하자면 인터페이스는 클래스에서 인터페이스를 구현할 때 해당 메서드를 반드시 구현해야한다. 하지만 추상 클래스는 한 개 이상의 메서드를 포함하지만 객체를 직접 생성할 수는 없다. 그리고 인터페이스는 다중 상속이 가능하지만 추상클래스는 단일 클래스만 상속 가능하다.
'Programming skills > CS(Computer Science)' 카테고리의 다른 글
[CS]객체지향프로그래밍(OOP) 특징 (0) | 2023.10.12 |
---|---|
[CS]선형 비선형 자료구조 (1) | 2023.10.11 |
TCP /UDP 특징 및 차이 (0) | 2023.09.04 |