인터페이스3 [Effective Java] 아이템64 객체는 인터페이스를 사용해 참조하라 적합한 인터페이스만 있다면 매개변수뿐 아니라 반환값, 변수, 필드를 전부 인터페이스 타입으로 선언하라. 객체의 실제 클래스를 사용해야 할 상황은 '오직' 생성자로 생성할 때뿐이다. 인터페이스를 타입으로 사용하는 습관을 길러두면 프로그램이 훨씬 유연해질 것이다. 단, 주의할 점이 하나 있다. 원래 클래스가 인터페이스의 일반 규약 이외의 특별한 기능을 제공하며, 주변 코드가 이 기능에 기대어 동작한다면 새로운 클래스도 반드시 같은 기능을 제공해야 한다. 따라서 적합한 인터페이스가 없다면 당연히 클래스로 참조해야 한다. 적합한 인터페이스가 없는 두번쨰 부류는 클래스 기반으로 작성된 프레임 워크가 제공하는 객체들이다. OutputStream 등 java.io 패키지의 여러 클래스가 이 부류에 속한다. 적합한 인.. 2021. 8. 1. [Effective Java] 아이템20 추상 클래스보다는 인터페이스를 우선하라 ■ 추상 클래스와 인터페이스의 차이점 추상 클래스 : 추상 클래스가 정의한 타입을 구현하는 클래스는 반드시 추상 클래스의 하위 클래스가 되어야한다. 인터페이스 : 인터페이스에서 정의한 메서드를 모두 정의한 클래스라면 다른 어떤 클래스를 상속했든 상관없이 같은 타입으로 취급. 즉, 인터페이스는 기존 클래스에도 손쉽게 새로운 인터페이스를 구현해넣을 수 있다. 인터페이스가 요구하는 메서드를 구현하고, implements만 추가하면 된다. 추상 클래스의 경우 2개의 클래스가 같은 추상 클래스를 확장하길 원한다면, 그 추상 클래스는 계층 구조상 두 클래스의 공통 조상이어야한다. 새로 추가된 추상 클래스의 모든 자손이 적절하지 않은 상황에서도 이를 상속하게 된다. ■ 믹스인 정의 인터페이스는 믹스인 정의에 맞춤이다.. 2021. 2. 24. [Java] 16. 인터페이스(Interface)와 추상클래스(abstract 클래스) 1. 메소드 내용이 없는 interface 자바에서 .class 파일을 만들 수 있는 것에는 클래스만 있는 것이 아닙니다. interface(인터페이스)와 abstract 클래스라는 것이 있습니다. 시스템을 만들 때 설계 단계에서 프로그램을 어떻게 만들 것 인지 정리합니다. 이 때 어떤 메소드를 만들지, 어떤 변수를 만들지를 정리하는 작업도 같이 합니다. 그런데, 내용들을 문서에만 정리하면 나중에 메소드 관련 내용들이 변경되면 문서도 수정해야 하므로, 2중 3중의 일이 됩니다. 그래서, 이 설계 단계에서 인터페이스라는것을 만들어 두면 개발할 때 메소드의 이름을 어떻게 할지, 매개 변수를 어떻게 할지를 일일이 고민하지 않아도 됩니다. 게다가 개발자의 역량에 따라 메소드 이름과 매개 변수 이름이 천차만별일 .. 2019. 4. 1. 이전 1 다음