728x90
학습 목표
- 인터페이스나 abstract 클래스를 사용해야 하는 이유
- 자바의 클래스는 다중 상속이 불가능한 이유와 인터페이스는 다중 구현이 가능한 이유
학습 결과 요약
- 인터페이스나 abstract 을 사용하면 설계 단계에서 미리 클래스를 정의할 수 있다. 그리고 외부에 노출되는 것을 미리 정의 가능하다.
- 인터페이스는 구현된 메서드를 갖을 수 없고 abstract 는 가능하다. 인터페이스에 default methoed 를 선언할 수는 있지만 추상클래스와는 목적이 다르다고 한다.
학습 내용
인터페이스를 사용하는 이유
- 설계
- 설계 단계에서 기능이나 메서드, 변수 명을 미리 정의한다.
- 개발할 때 기능 구현에만 집중 가능
- 메서드 이름과 매개 변수 선언을 어느 정도 통일화 가능
- 선언과 구현을 구분할 수 있음
- 외부에 노출되는 것을 정의
- 자바에서 abstract 의미
- 자바에서는 메서드가 구현되지 않은, 인터페이스에 있는 메서드 선언문들과 같이 몸통이 없이 선언한 것을 abstract 라는 용어로 표현한다.
- 인터페이스의 자동 타입 변환인터페이스에 선언된 메서드를 호출하면 자식의 것이 호출된다.
- 상속과 마찬가지로 인터페이스 타입의 참조 변수에 구현 객체의 참조값을 할당할 수 있으며,
인터페이스에 선언된 메서드를 호출하면 자식의 것이 호출된다.
public class FeatureInterfaceImpl implements FeatureInterface {
@Override
public void doSomething() {
}
}
FeatureInterface featureInterface = new FeatureInterfaceImpl();
abstract 클래스
- 인터페이스는 아무것도 구현되어있지 않은 반면 abstract 클래스는 일부 완성되어 있는 클래스다.
- abstract 클래스를 초기화 및 실행은 불가능하다. 구현 클래스로 가능하다.
- abstract 메서드가 하나라도 있으면 abstract 클래스로 선언해야 한다.
- 상속 받는 클래스에서 추상 메서드를 반드시 구현해야 컴파일에 성공하기 때문이다.
- 인터페이스를 선언하다 보니, 어떤 메서드는 미리 만들어 놓아도 전혀 문제가 없는 경우가 발생한다.
- 자바 버전이 오르면서 인터페이스에도 default 메서드라는 구현된 메서드를 선언할 수 있게 되었다.
- → 그럼 default method 가 있는 인터페이스 vs 추상 클래스 공부하기
final 사용시 주의사항
- final 변수로 선언하면 최종 값이란 의미로 생성과 동시에 초기화하고 그 이후에 값을 변경할 수 없다.
참조 변수가 참조하는 객체의 내용은 바뀔 수 있다. - final 변수의 타입이 참조형일 경우 주의 사항은 참조변수에 대해 재할당을 못할 뿐이지
- 이처럼 참조형 변수를 final 선언했다고 해서 객체의 내용까지 값이 안바뀜을 보장할 수 없다.
- 참조 변수가 final 이라 해서 객체 안의 인스턴스 변수나 클래스 변수는 final은 아니라는 것을 항시 기억하자.
상수의 집합, enum 클래스
- final 로 기본 자료형의 값을 고정할 수 있다.
- 이런 고정된 값을 상수라고 하며 영어로는 constant 라고 한다.
- 클래스가 상수만으로 만들어져 있을 때 enum 을 선언하면 이 객체는 상수의 집합이다 라는 것을 명시적으로 나타낸다.
- 생성자를 만들 수 있지만, 생성자를 통해 객체를 생성할 수는 없다.
- enum 상수에 값을 지정하는 것은 가능하나, 값을 동적으로 할당하는 것은 불가능하다.
- 생성자 접근 제어는 private, package-private 만 가능하다.
728x90
'Programming > Java' 카테고리의 다른 글
[F-Lab 모각코 챌린지 15일차] Java : 예외 처리 (0) | 2023.06.17 |
---|---|
[F-Lab 모각코 챌린지 14일차] Java : 불변객체 (1) | 2023.06.16 |
[F-Lab 모각코 챌린지 11일차] Java : 자바의신 10장-2 (0) | 2023.06.13 |
[F-Lab 모각코 챌린지 10일차] TIL : 자바의신 10장 (0) | 2023.06.12 |
[F-Lab 모각코 챌린지 9일차] TIL : 자바의신 9장 (0) | 2023.06.11 |
댓글