우리가 기본적으로 배운 타입들 외에도 사용자의 편의에 맞춰서 정의한 타입들이 존재합니다.
1. 구조체
2. 공용체
3. enum
4. class
5. interface
이렇게 총 5가지의 사용자 정의 타입이 존재하는데요.
이 페이지에서는 인터페이스에 대해서 다뤄보도록 하겠습니다.
interface(인터페이스)
인터페이스는 메서드의 목록만 가지고 있는 명세를 말합니다. 이때 메서드의 목록은 선언만 할 뿐 코드가 따로 없기 때문에 독립적으로 사용이 불가능하며 반드시 다른 클래스에 상속을 받아야 합니다. (인터페이스끼리도 상속이 가능하지만 마찬가지로 코드가 따로 없다.)
인터페이스의 형태
public interface Iinter : oldIinter //상속받는 인터페이스는 있어도 없어도 상관없습니다.
{
void newInter();
int Add();
double round();
...
}
public class : Iinter {
//코드
}
❓그렇다면 왜 인터페이스를 사용하는걸까요?
❗인터페이스는 본체를 정의하지 않는 추상 메서드만 가지고 있어서 작업을 하게 되면 작업하고자 하는 프로젝트의 표준이라 할 수 있습니다. 그래서 보통 인터페이스는 기존의 기능을 추가하거나 업그레이드하는 게 아니라 동일한 개념으로 새로운 코드를 구현할 때 사용됩니다.
🔻예시가 조금 이상하지만 이렇게 똑같은 형태의 새로운 데이터를 만들 때 사용됩니다. 이때 인터페이스는 다중상속이 가능합니다.
interface monster{
string whatKindOf(string monster);
}
class pocketmon : monster {
public string type, attack;
public pocketmon (){
type = "미정";
attack = "미정";
}
public string whatKindOf(string monster){
switch(monster){
case "피카츄" : {
this.type = "전기";
this.attack = "백만볼트";
break;
}
case "꼬북이" : {
this.type = "물";
this.attack = "하이드로펌프";
break;
}
}
return $"{monster}는 {this.type}포켓몬으로, {this.attack}이 주스킬이다.";
}
}
class digimon : monster {
public string type, attack;
public digimon (){
type = "미정";
attack = "미정";
}
public string whatKindOf(string monster){
switch(monster){
case "아구몬" : {
this.type = "백신";
this.attack = "꼬마불꽃";
break;
}
case "파피몬" : {
this.type = "데이터";
this.attack = "파란불꽃";
break;
}
}
return $"{monster}의 속성은{this.type}이며, {this.attack}이 주스킬이다.";
}
}
class HelloWorld {
static void Main() {
pocketmon pk = new pocketmon();
digimon dg = new digimon();
Console.WriteLine(pk.whatKindOf("피카츄"));
Console.WriteLine(dg.whatKindOf("파피몬"));
}
}
'프로그래밍📚' 카테고리의 다른 글
오버로딩과 오버라이딩 (0) | 2024.02.05 |
---|---|
객체지향이란? (0) | 2024.02.05 |
사용자 정의 타입이란? - class (0) | 2024.02.05 |
사용자 정의 타입이란? - 공용체와 enum (0) | 2024.02.05 |
사용자 정의 타입이란? - 구조체 (0) | 2024.02.05 |