[C#] 인터페이스 INTERFACE , Loosely Coupling
by #독개#[🔥 프로그래밍언어/C#] - [C#] 추상 클래스 Abstract
독한 개발자
C++, C#, Autohotkey 의뢰,강의 등을 다룹니다
nanagame2.tistory.com
인스턴스는 모든것이 Abstract 이다.
정의
- Abstract Method와 같이 선언부만 포함하는 형식
- 클래스와는 구분됨. 다중 상속 가능
- 인스턴스화 될 수 없음
- 인터페이스를 상속한 클래스는 반드시 인터페이스에서 선언된 메서드를 구현해야 한다
- 속성(property 사실 메서드선언)도 포함될 수 있음
- only 규격만 정의한다
사용목적
- 표준화, 규격화, 계약 등등의 의미
응용
- 인터페이스와 다형성
- 인터페이스를 이용한 콜백 구현
- 느슨한 연결(Loosely Coupling)
특징
인터페이스는 대문자 I로 시작하는 것으로 약속
Ixxxalbe 이렇게 쓰기도 한다 (IEnumerable,IComparable,IDisposable등)
#실습 - 구성
public interface IMachinable
{
public void Start();
}
abstract public class Car : IMachinable
{
public string Brand = "BMW";
abstract public void Start(); //인터페이스의 Start구현
}
public class Sonata : Car
{
override public void Start()
{
Console.WriteLine("소나타의 시동을 킵니다");
}
}
public class Morning : Car
{
override public void Start()
{
Console.WriteLine("모닝의 시동을 킵니다");
}
}
#실습 - 구현
1. Loosely Coupling
static public void Main(string[] args)
{
Sonata sonata = new Sonata();
Morning morning = new Morning();
CommandStart(sonata); //출력: 소나타의 시동을 킵니다
CommandStart(morning); //출력: 모닝의 시동을 킵니다
}
static public void CommandStart(IMachinable obj)
{
obj.Start();
}
/*이렇게 해도 사실은 되지 최상위까지 안가도*/
//public void CommandStart(Car obj)
//{
// obj.Start();
//}
2. Tightley Coupling
/* Tightly Coupling 강력한 연결 */
public void CommandStart(Sonata obj)
{
obj.Start();
}
public void CommandStart(Morning obj)
{
obj.Start();
}
'🔥 프로그래밍 학습 > C#' 카테고리의 다른 글
[C#] 제네릭 함수, 클래스 (0) | 2022.11.28 |
---|---|
[C#] 구조체 Struct (0) | 2022.11.28 |
[C#] 추상 클래스 Abstract (0) | 2022.11.28 |
[C#] ToString()의 활용 (0) | 2022.11.28 |
[C#] 모든 클래스의 조상 Object클래스 (0) | 2022.11.28 |
블로그의 정보
독한 개발자
#독개#