using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// [인터페이스]
// 하나만 상속받을 수 있는 클래스와는 달리, 다중 상속 가능
// 뼈대(골격) 제공
// 추상 메소드 같은 경우, 재정의 할 때 override를 사용하지만 인터페이스를 정의할 땐 override를 사용하지 않는다.
// class 같은 경우에는 변수를 선언할 수 있지만(그래서 인터페이스에서 해당 변수 가져다가 쓸 수 있음), 인터페이스에서는 변수를 선언할 수 없다.
// 함수, 프로퍼티, 인덱서, 이벤트 이렇게 4가지만 정의할 수 있다.
abstract public class A : MonoBehaviour // 추상 클래스1
{
abstract public void Abc(); // 추상 메소드. 추상 메소드 와 추상 클래스는 항상 함께 사용하여야 한다.
}
//abstract public class B : MonoBehaviour // 추상 클래스2
//{
// abstract public void Bbc();
//}
interface ITest // 인터페이스는 명칭에 항상 'I'를 붙여줌으로써 구분한다.
{
// 뼈대 제공, 다중 상속
void Bbc();
// 함수 프로퍼티, 인덱서, 이벤트의 큰 틀만 제공(값 대입 X)
int SalaryP { get; set; }
}
interface ITest2 : ITest // 인터페이스끼리 상속. ITest2가 ITest를 상속받음.
// 이렇게 하면 ITest2만 상속받으면 ITest까지 모두 상속받는 효과를 볼 수 있다.
{
}
public class Test : A, ITest // 추상 클래스 A를 상속받음(Test 클래스 == 자식 클래스, A 클래스 == 부모 클래스) >>> 추상 클래스는 여러 개 상속 받지 못한다. 클래스는 반드시 하나만 상속받을 수 있다.
// 부모 클래스에서 미완성된 추상 클래스를 자식 클래스에서 완성시켜야 된다.
// Test 우클릭, [빠른 클릭 및 리펙터링] -> 추상 클래스 구현
{
public int SalaryP { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); }
public override void Abc() // 여기에다가 Abc 함수에 여러가지 기능들을 구현할 수 있다.
{
throw new System.NotImplementedException();
}
public void Bbc()
{
print("Bbc");
}
}
카테고리 없음
댓글