모든 클래스의 최상위 조상은 object이다.
클래스로 인터페이스 선언
인터페이스 선언은 class 키워드 대신 interface 키워드를 사용
접근 제한자로는 클래스와 마찬가지로 같은 패키지 내에서만 사용가능한 default
상수 필드
- 인터페이스는 public static final 특성을 갖는 불변의 상수
- 인터페이스에 선언된 필드는 모두 public static final 특성
- public static final 생략 가능
- 상수명은 대문자로 작성하되, 서로 다른 언어로 구성되어 있을 경우에는 언더바(_)로 연결
remote control
default가 public이다.
추상 메소드
디폴트 메소드
- 인터페이스에는 완전한 실행 코드를 가진 디폴트 메소드를 선언할 수 있음
- 추상 메소드는 실행부(중괄호{})가 없지만 디폴트 메소드는 실행부 있음
- default 키워드가 리턴 타입 앞에 붙음
- 디폴트 메소드의 실행부에는 상수 필드를 읽거나 추상 메소드를 호출하는 코드를 작성할 수 있음
정적 메소드
- 구현 객체가 없어도 인터페이스만으로 호출할 수 있음
- 선언 시 public을 생략하더라도 자동으로 컴파일 과정에서 붙음
private 메소드
- 인터페이스의 상수 필드, 추상 메솓, 디폴트 메소드, 정적 메소드는 모두 public접근 제한을 가짐
- public을 생략하더다고 항상 외부에서 접근 가능
인터페이스 상속
impl : implementation
다형성
- 부모타입으로 자식 인스턴스를 운영할 수 있다.
- 리스코프 치환 원리
- tire가 인터페이스이기 때문에 new Tire();로 사용할 수 없다.
- 결합도는 낮추고 응집도는 높여라.
- 응집도를 높이려면, SRP(단일책임원칙)을 지켜야 한다.
나는 이번생은 섬세한 사람이다.
그냥 인정하고 나아가자.
조금 덜 상처받는 법, 그리고 힘듦에도 묵묵히 나아가는 것
생각보다 신경안씀
생각이랑 고민 덜기
- upcasting : 자식클래스에서 부모 클래스로
- downcasting :
객체 타입 확인
강건한 객체지향 설계원칙
SOLID
Single responsible
OPC
Lis코프
Interface 분리원칙
Dependency Inversion Principle
개방 폐쇄 원칙(Open-Cloesd Principle)
- 기능확장에는 열려 있고, 변화에는 닫혀 있어야 함
- 추상화와 다형성(상속)을 이용해서 구현
다중성 표현
집합관계
집약(aggregation) : 약결합 loosely-coupled
일반화는 상속