Notice
Recent Posts
Recent Comments
Link
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

woojin++

C# 기초다지기 - 인터페이스와 추상 클래스(메서드 , 추상 메서드) 본문

C#

C# 기초다지기 - 인터페이스와 추상 클래스(메서드 , 추상 메서드)

곰바구니 2022. 1. 28. 12:56

인터페이스는 클래스와 비슷하게 선언하지만 , 클래스 다르게 인스턴스를 가질 수 없다 .

클래스가 상속받아 활용하는 개념이다.

메소드 , 이벤트 , 인덱서 , 프로퍼티 를 가질 수 있으며 , 선언만 가능하고 구현 내용을 정의 할 수 없다.

구현부는 상속받은 클래스에서 정의한다. 그리고 상속받은 클래스는 인터페이스에서 선언된 모든 항목에 대하여 구현부를 정의해야한다. 즉, 인터페이는 상속받아 활용하는 '틀'로서의 역할을 한다고 볼 수 있다.

또한 인터페이스는 인스턴스를 가질 수는 없지만 참조 변수를 만들 수는 있다. 따라서 인스턴스의 참조 변수를 만들고 해당 인터페이스를 물려받은 클래스들에 대한 참조를 저장할 수 있다. 하지만 해당 인터페이스에 선언된 것만 사용 할 수 있다. 

하지만 다운 캐스팅하면 사용 할 수있다. 

또한 인터페이스는 클래스와 다르게 여러 인터페이스 중복 상속이 가능하다. 

인터페이스는 상속받아 활용하는 것만 가능하므로 접근제한자를 사용하지않는다. 

추상 클래스는 인터페이스와 클래스의 성격을 조금씩 닮았다. 추상 클래스도 기본적으로 인스턴스를 가질수 없으므로 마찬가지로 클래스가 상속받아 활용하는 개념이다. 추상 클래스는 추상메서드를 사용하면 인터페이스와 비슷하게 사용할 수있다.  추상 메서드는 구현부를 정의할 수 없고, 상속받은 클래스는 반드는 추상 메서드에 대한 구현부를 정의해야만 한다.

추상클래스가 인터페이스와 다른점은, 추상 클래스는 인터페이스와 다르게 구현부가 정의되어있는 내용도 가질 수 있다.

즉, 클래스에서와 같이 구현부까지 정의된 일반 함수를 정의하여 돌려받도록 할 수 있다. 만약 추상 클래으세 추상 함수없이 이런 내용만 작성한다면 일반 클래스와 같이 활용 할 수도 있다.