제이커브(Jcurve)
카멜레온 개발자 이야기
제이커브(Jcurve)
전체 방문자
오늘
어제
  • 분류 전체보기 (26)
    • Programming skills (19)
      • Unity (8)
      • C# (1)
      • 자료구조 (3)
      • 알고리즘 (1)
      • Git (1)
      • CS(Computer Science) (4)
      • Unreal (0)
      • C++ (1)
    • Literacy Review (1)
    • Finance (1)
      • Metaverse (0)
      • 주식 (1)
      • 가상화폐 (0)
    • Certificates (0)
      • 기사 (0)
      • Coursera (0)
      • Fast campus (0)
    • Architecture (5)
      • 건축시공학 (4)
      • 철근콘크리트구조 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 유니티
  • 패캠챌린지
  • 주식
  • c++문법
  • 일상 #초보 #기록# 일기
  • 건설시공관리자
  • 백준
  • 게임개발
  • 자료구조 # 스택과 큐
  • 건설사업관리
  • ㅊ++기본문법
  • cmatrisk
  • 건설현장조직구성
  • C#과 유니티로 배우는 게임 개발 올인원 패키지 Online
  • 패스트캠퍼스
  • 스마트건설기술
  • 건축시공학
  • 직장인자기계발
  • 일상
  • 싱글톤 # 유니티 #c# #Singleton
  • 유니티강의
  • 건축전문가
  • Z세대
  • 역타공법
  • 직장인인강
  • VR #메타버스 #metaverse #Eyetracking #아이트래킹 #데이터추출
  • Literacy review
  • 건축
  • 건축공학
  • 패스트캠퍼스후기

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
제이커브(Jcurve)

카멜레온 개발자 이야기

[CS] 인터페이스와 추상 클래스 차이
Programming skills/CS(Computer Science)

[CS] 인터페이스와 추상 클래스 차이

2023. 10. 18. 23:38

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
    'Programming skills/CS(Computer Science)' 카테고리의 다른 글
    • [CS]객체지향프로그래밍(OOP) 특징
    • [CS]선형 비선형 자료구조
    • TCP /UDP 특징 및 차이
    제이커브(Jcurve)
    제이커브(Jcurve)
    미래지향적인 성향으로 VR/AR, XR 등 가상현실에서 살아가는 사람들에 대한 공간을 연구하는 이야기입니다. 가상현실에 대한 공부와 연구를 주로 합니다.

    티스토리툴바