C#
C#_인터페이스: 인터페이스를 사용하는 이유(다중상속)
S_pot
2021. 6. 4. 14:29
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
abstract class Smart
{
int iNum1;
int iNum2
{ set { } get { return 100; } }
int iNum3 { get; set; }
void test1() { }
public abstract void test2();
}
interface IBasic2
{
// int iNum; // 인터페이스는 안에 인스턴스 변수를 선언할 수 없다.
// int iNum2{set{ } get{ }} // 불가: 세부설정 사용안됨
// void test2() { } // 불가: 구현한 메소드는 허용하지 않는다.
int iNum { get; set; } // 허용 : 속성, 프로퍼티
void test(); // 허용: 인터페이스에서는 body가 없어도 abstract를 적지 않는다.
// = 본체가 없는 메소드 이름만 허용한다. = 속성과 추상메소드만 허용
// 인터페이스는 철저하게 설계위주
// 추상클래스가 인터페이스의 기능을 모두 수행할 수 있는데도
// 인터페이스를 사용하는 이유는?
// 다중상속을 구현할 때 사용된다.
// 클래스와 비슷하지만 클래스와는 다르다.
}
interface IBasic
{
int TestInstanceMethod();
int TestProperty { get; set; }
}
class Program
{
static void Main(string[] args)
{
// IBasic aIBasic = new IBasic(); // 인터페이스는 객체가 없으므로 ()와 같은 객체를 생성할 수 없다.
IBasic aIBasic; // 즉 인터페이스는 상속받는 용도로 사용한다.
TestClass aTestClass = new TestClass();
}