사진은 오페라 가르니에 - 나폴레옹이 궁전에서도 건물을 보기를 원해서 루브르와 일직선 도로로 연결되어있다
사실 인터페이스는 자바에서 제일 힘들어하는 개념 중 하나였는데 인터페이스가 어떤 기능과 역할로 다형성을 수행하는지 알면서 다시 보니 훨씬 수월했다. 그래도 직접 해보는거랑은 다른 느낌이라 연습이 필요할 듯 하다.
타입 변환 조건
1. 상속 관계에서만 가능
2. 업캐스팅(하위 클래스 -> 상위 클래스)은 형변환 연산자 생략 가능
3. 다운 캐스팅(상위 클래스 -> 하위 클래스)은 형변환 연산자 명시해야됨
➕ 이미 업캐스팅 되어있다는 전제하에만 다운캐스팅 가능!
abstract
키워드로 추상 메서드, 추상 클래스 만듦
final
키워드 위치별 역할
1. 클래스: 변경, 확장, 상속 불가능
2. 메서드: 오버라이딩 불가능
3. 변수: 값 변경 불가능
=> final
붙으면 더이상 확장 안되거나 변경 안됨
🫧추상화 정도가 아래로 갈수록 높다🫧
일반 클래스
추상 클래스 (일반 클래스에서 추상 메서드 하나라도 포함)
인터페이스 (상수와 추상메서드만 멤버로 가짐)
implements
키워드로 구현
상수는 반드시 public static final
메서드는 반드시 public abstract
다중 구현 가능
인터페이스는 인터페이스로부터만 상속 가능
클래스는 다른 클래스로부터 상속받으면서 인터페이스 구현 가능