... | ... | @@ -907,3 +907,30 @@ namespace ConsoleApplication1 |
|
|
}
|
|
|
```
|
|
|
|
|
|
#### 인터페이스
|
|
|
구현 없는 메서드 선언이 포함되어 있다. 다중 상속이 불가능하기 때문에 그것을 대체하기 위해서 쓴다. C# 컴파일러가 인터페이스의 메서드를 가상메서드로 간주하고 있기 때문에 인터페이스에서 virtual 예약어와 자식클래스에서 override 예약어를 쓰지 못하게 막는다.
|
|
|
* public을 명시해서 메서드 구현시 그 메서드는 클래스의 멤버로 호출 가능하다.
|
|
|
* public을 생략하면 인터페이스명.메서드명()으로 구현해야 하고 호출 또한 해당 인터페이스로 형변환 한 다음 호출해야한다.
|
|
|
```c#
|
|
|
class Computer { }
|
|
|
|
|
|
interface IMonitor { void display(); }
|
|
|
|
|
|
interface IKeyboard { }
|
|
|
|
|
|
class NoteBook : Computer, IMonitor, IKeyboard
|
|
|
{
|
|
|
public void display()
|
|
|
{
|
|
|
//override 예약어는 쓰지 않아도 되지만, public은 반드시 명시해야함. notebook.display() 가능
|
|
|
}
|
|
|
|
|
|
//또는
|
|
|
|
|
|
void IMonitor.display()
|
|
|
{
|
|
|
//이렇게 쓰면 호출 할 때에도 IMonitor mon = notebook as IMonitor; IMonitor.display() 식으로 형변환해서 호출해야한다.
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|