다형성
: 다른 그림 찾기 같이 멀리서 보면 같지만 자세히 보면 다름
: 함수 이름이 같더라도 전달 인자의 타입이나 개수에 따라 구분
: 객체 지향에서는 대표적으로 오버로딩과 오버라이딩 기법이 있음
--> 면접 단골 질문~~
오버로딩
: 과적하다, 적재하다
: 겉모습은 똑같지만 내용이 다른 경우
: 이름이 같은 함수일지라도 전달인자 타입이나 개수가 다른 경우
예) 컨테이너 겉모습은 다 같지만, 내용은 다 다름
예) 스타크래프드의 오버로드 유닛의 예
int Plus (int a, int b)
{
return a + b;
}
char Plus (char a, char b)
{
return a + b;
}
- 함수 사용 시 매개변수의 타입과 개수에 따라 알아서 대응하는 함수를 사용해줌
오버라이딩
: 위로 올라탄다, 엎어친다
: 기본의 것을 덮어 버리는 개념 (재정의)
: 상속 대념이 기반
- 부모의 함수를 그대로 가져와서 새로 만들면 됨
- 함수포인터를 객체 포인터 형태로 확장 (플러그인)
인터페이스
: 메소드의 목록만을 가지고 있는 명세, 사용자 정의 타입
: 메소드의 목록만 선언하고 구현은 하지 않음
: 본체가 정의되지 않는 추상 메소드만 갖음
: 인터페이스를 받는 자식클래스는 '반드시' 메소드를 오버라이딩해 구현해야 됨
선언 형태
접근지정자 interface 이름 : 기반인터페이스(없어도 됨)
{
}
인터페이스를 상속받는 클래스 형태
접근지정자 class 자식클래스이름 : 인터페이스
{
}
사용 이유
- 목적 : 기능을 추가, 수정의 개념보단 동일한 개념의 기능을 새롭게 구현하는 기능
- 공동 작업 시 '표준'을 정하는 역할
추상 클래스를 상속하는 경우
- 일반적으로 클래스를 사용하는 이유(목적) : 확장
public interface 통화기능 {}
public interface 문자메세지기능 {}
public interface 와이파이기능 {}
public interface 블루투스기능 {}
//다중상속
public interface 스마트폰_기본기능 : 통화기능,문자메세지기능,와이파이기능,블루투스기능
{
void 통화기능구현 ();
void 문자메세지기능구현 ();
void 와이파이기능구현 ();
void 블루투스기능구현 ();
}
public class 삼성폰 : 스마트폰_기본기능 {
public void 통화기능구현 (){console.log ("삼성폰 통화기능")};
public void 문자메세지기능구현 (){console.log ("삼성폰 문자메세지기능")};
public void 와이파이기능구현 (){console.log ("삼성폰 와이파이기능")};
public void 블루투스기능구현 (){console.log ("삼성폰 블루투스기능")};
}
인터페이스 코드 작성
- 인터페이스 생성하고, 인터페이스로부터 상속받은 클래스를 구현
메모리 관리
- 플랫폼 기반의 객체 지향 언어는 가비지 컬렉터가 메모리를 자동 관리함 (malloc처럼 메모리 해제 메소드 필요 X)
- 백그라운드에서 더 이상 사용되지 않는 메모리를 찾아 회수
람다
람다를 통한 화살표 함수의 이해
- 메소드를 미리 정의하지 않고 사용할 때 정의
- 익명 메소드를 사용하면 코드가 간결
- 익명 메소드는 별도의 메소드를 만들지 않으므로 코딩 오버헤드를 줄일 수 있음
- 익명 메소드는 내용 자체가 복잡하면 안됨
- 익명 세모스는 람다식에서 사용
람다식
: 기존 익명 메소드를 더 간결하게 만든다
목적 - 코드를 짧고 간결하게 표현
람다식 표현
- 델리게이트 본체를 람다식으로 표현
- 델리게이트와 인슈의 개수 및 타입은 일치해야 함
(인수) => 표현식 또는 명령문
- 델리게이트 키워드는 사라지면 람다식을 의미하는 => 기호로 대체됨
delegate (int x, int y) {return x+y;}
-> (x,y) => x + y;
'데브코스 > 강의 정리' 카테고리의 다른 글
클래스와 객체, 생성자, 접근지정자, getter와 setter (0) | 2024.10.29 |
---|---|
리터럴, any, 유니온, array, tuple (0) | 2024.10.29 |
객체 지향, 추상화, 캡슐화, 클래스, 생성자, 상속성 (0) | 2024.10.28 |
함수 포인터, 구조체, 열거형, 동적 메모리 할당 (0) | 2024.10.28 |
연산자, 조건문, 반복문, 함수, 변수의 범위, 배열, 포인터 (0) | 2024.10.24 |