티스토리 뷰
💥 인터페이스(Interface)
- 인터페이스란 메소드의 목록만을 가지고 있는 명세(Specification), 사용자 정의 타입이다.
- 메소드의 목록만 선언하고 구현은 하지 않는다.
- 인터페이스의 선언 형태
- 인터페이스를 상속받는 클래스의 형태
💥 인터페이스를 사용하는 이유
- 인터페이스는 본체가 정의되지 않는 추상메소드만 갖는다.
- 인터페이스의 목적은 기존의 기능을 추가하거나 수정의 개념보다는 동일한 개념의 기능을 새롭게 구현하는 기능이다.
- 공동 작업 시, 표준을 정하는 역할이다.
💥 추상 클래스를 상속 하는 경우
- 일반적으로 클래스를 상속하는 이유는 기능의 확장이 목적이다.
💥 인터페이스를 상속 하는 경우
- 스마트폰의 기능 목록 : 통화기능, 문자메시지, 와이파이, 블루투스, ...
- 스마트폰과 상속 관계의 개념이 아니라 여러가지 기능의 나열이다.
- 인터페이스에서 기능을 명세하고, 자식클래스에서 상속한다.
💥 메모리 관리
- 플랫폼 기반의 객체 지향 언어는 가비지 컬렉터가 메모리를 자동 관리한다.
- 백그라운드에서 더 이상 사용되지 않는 메모리를 찾아 회수한다.
💥 인터페이스 코드 작성
- 인터페이스를 생성하고, 인터페이스로부터 상속받은 클래스를 구현
- 스타크래프트 게임의 3종족들의 유닛 기능 - 공격과 이동 등, ...
- 공격과 이동은 유닛의 필수 기능
- 유닛 중에 저글링과 드라군 2개의 유닛을 인터페이스를 통해 구현
💥 인터페이스 실습 해보기
using System;
public interface IUnit{
void Attack();
void Move();
}
public class Zergling : IUnit{
public void Attack(){
Console.WriteLine("저글링 : 공격");
}
public void Move(){
Console.WriteLine("저글링 : 이동");
}
}
public class Draggoon : IUnit{
public void Attack(){
Console.WriteLine("드라군 : 공격");
}
public void Move(){
Console.WriteLine("드라군 : 이동");
}
}
class HelloWorld {
static void Main() {
Zergling zerg = new Zergling();
zerg.Attack();
zerg.Move();
Draggoon dragoon = new Draggoon();
dragoon.Attack();
dragoon.Move();
}
}
'웹 개발 공부하기' 카테고리의 다른 글
[01.13] 객체 리터럴 (0) | 2025.01.13 |
---|---|
[01.09] 람다 + 오늘의 포스팅💖 (0) | 2025.01.12 |
[01.09] 오버로딩과 오버라이딩 (0) | 2025.01.12 |
[01.09] 생성자와 상속성 (0) | 2025.01.12 |
[01.09] 클래스(Class) (0) | 2025.01.12 |