구현 객체와 구현 클래스 1. 인터페이스의 추상 메소드에 대한 실체 메소드를 가진 객체 = 구현 객체 2. 구현 객체를 생성하는 클래스 = 구현 클래스
구현 객체와 구현 클래스 참고용
인터페이스를 상속받아 추상메소드를 모두 구현한 클래스입니다.
만약 모든 추상메소드를 구현하지 않았을 경우에는 오류가 발생하거나 추상 클래스가 됩니다.
해당 추상 클래스를 상속 받아 구현한 실체 클래스가 있어야 합니다.
사실 얘들은 ?일차일 때 RemoteControl 기억하시나요? 걔들로 구현해 봤습니다.
구현 클래스 선언
이것 역시 다 해봤습니다
그러면 이걸 왜 다시 공부해? 라고 할 수 있겠는데 복습 + 새로운 것이 나옵니다.
익명 구현 객체(1회용) - 명시적인 구현 클래스 작성을 생략하고 바로 구현 객체를 얻는 방법 1. 이름 없는 구현 클래스 선언과 동시에 객체 생성 2. 인터페이스의 추상 메소드들을 모두 재정의하는 실체 메소드가 있어야 함. 3. 추가적으로 필드와 메소드 선언 가능하나 익명 객체 안에서만 사용 4. 인터페이스 변수로 접근 불가
원래 인터페이스에서 new를 사용하지 못하지만 여기서는 사용 가능하지만
대신 위에 사진처럼 코드 마지막에 세미콜론을 붙여줘야 합니다.
new 때문에 인터페이스 4개요소와 특징 복습)
인터페이스 4개요소 - 상수, 정적메소드, 추상메소드, 디폴트메소드
특징 - 객체 생성이 불가
코드로 이해하러 가보시죠
저번에 만든 RemoteControlEx에서 해보겠습니다.
RemoteControlEx Class
잘 됩니다. 이제 익명 구현 객체를 사용해보겠습니다.
RemoteControlEx
이러면 오류가 뜨지만 위에서 코드 블럭 + 세미콜론을 해주면
오류가 바뀝니다. quick fix로 바껴버립니다.(이건 캡쳐를 못했습니다.)
RemoteControlEx
저희는 익명 구현 객체를 사용해 인터페이스로 객체를 생성했습니다.
또한, 객체의 이름이 존재하지 않기 때문에 1회용으로만 사용됩니다.
다중 인터페이스 구현 클래스 추상클래스와 인터페이스의 다른점이라 할 수 있습니다. "다중 구현(상속)" 입니다. 추상 클래스는 클래스이기 때문에 단일 상속만 가능하지만 인터페이스는 클래스가 아니기 때문에 다중 상속을 지원합니다. 다중 인터페이스 구현 클래스 참고용