인터페이스와 추상 클래스 프로퍼티(Property)
================================ Outline ====================================
인터페이스와 추상 클래스
프로퍼티(Property)
----------------------------------------------------------------------------
교재 p/262, 인터페이스와 추상 클래스
인터페이스의 선언은 클래스 선언과 비슷한 형태를 띈다.
** interface를 사용할 때 묵시적으로 이름 앞에 ‘I'를 붙혀 구분한다.
인터페이스는 다수의 사람이 프로젝트를 진행할 때 일관성과 연결방식의 일치를 위한 일종의 안내서이다.
인터페이스는 클래스뿐만 아니라 구조체도 상속가능하며, 실제 구현이 아닌 껍데기만 갖는다.
ex) interface iRunnable
{
void Run();
}
추상클래스는 인터페이스와 달리 “구현”을 가질 수 있다. 하지만 클래스와는 달리 인스턴스를 가질 수 없다. 파생 클래스에서만 해당 메소드를 구현할 수 있다. 추상클래스는 선언하는 키워드는 ‘abstract'이다.
추상 클래스를 사용하면 프로그래밍 시 매뉴얼에 상기하지 않고도 컴파일 시 컴파일러가 추상 클래스를 이용하는 다른 프로그래머가 파생 클래스를 만들어야 하며 모든 추상 메소드를 구현해야 한다는 사실을 알려준다. 예를 들어 추상 클래스에서 3개의 메소드를 구현하고 2개의 메소드는 abstract상태로 만들게 되면 해당 추상 클래스를 받는 클래스에서는 abstract가 붙는 메소드를 구현해야 한다. abstract가 붙은 메소드를 구현할 때는 ‘override'키워드를 붙혀 주어야 한다.
클래스는 복수개의 부모를 가질 수 없다는 단점이 있다. 이는 조상으로부터 물려 받은 메소드가 서로 다른 부모에서 오버라이딩 경우에 자식이 어떤 메소드를 가져와야 할지 알 수 없기 때문이다.
예제 p/266. 작성해보기
using System; |
Q1. 인터페이스와 클래스의 차이점
- 인터페이스는 인터페이스 내에 담긴 메소드의 껍데기 즉 매개변수가 없는 원형만을 제시할 뿐 구현을 하지 않는다. 반면에 클래스는 매개변수가 포함된 메소드의 원형을 포함한 실행 내용을 상세하여야 한다. 클래스와 클래스간의 상속은 중복 상속이 불가능한 경우가 있지만, 클래스에서는 중복의 인터페이스를 상속 받을 수 있다.
Q2. 인터페이스와 추상 클래스가 다른 점
- 추상 클래스는 인터페이스와 달리 클래스를 구현할 수 있다. 추상 클래스는 인터페이스와 클래스의 중간이라고 볼 수 있다. 추상 클래스 내에서 abstract를 사용하여 인터페이스 형식의 함수 원형만 제시할 수 있고, 클래스처럼 메소드를 구현할 수 있기 때문이다.
교재 p/282 프로퍼티(property)
visual studio에서 형성된 객체의 설정을 위해 주어지는 설정 값을 사용자가 명기함으로써
직접 값을 넣어주는 것이다.