📝느낀 점
인터페이스 또한 클래스랑 같은 파일이라고 생각하고 객체 생성이 가능한거 아냐? 생각했다.
(물론 문법 공부할때 객체 생성은 클래스로! 라는 것은 알고 있었다. 하지만 궁금증이 생겨서 그런것)
근데 왜? 인터페이스에서는 객체 생성을 왜 하지 않지? 이런 궁금증이 생겼고,
해답을 찾아낸 지금은 좀 부끄럽기도 하고, 이래서 깊이 공부해야 된다는 거구나 느끼게 된 것 같다.
뭐든지 너무 당연하게만 생각하고 넘어가면 큰일난다! 가장 중요한 것은 인터페이스는 클래스와 다르다는 점이다.
자바 인터페이스는 추상적인 형태를 가지고, 구체적인 구현을 제공하지 않기 때문이다.
인터페이스의 목적은?
클래스에게 특정 메서드의 구현을 강제하고,
서로 다른 클래스가 공통의 동작을 보장하기 위한 것이다.
궁금증.
인터페이스는 상수 필드만 선언이 가능하다고 한다.이유가 뭘까?
그 이유는 클래스와 달리 객체를 생성해서 사용할 수 없기 때문이다.
즉, 인터페이스는 클래스가 아니라는 점을 기억해야 한다.
더 자세히 말해보면,
상수의 일관성
인터페이스 내에서 필드를 상수로 취급하는 이유는
인터페이스가 제공하는 값이 변경되지 않아야 함을 의미한다.
즉, 상수는 변경되지 않는 고정된 값이므로,
서로 다른 클래스가 동일한 상수를 공유하여 일관성을 유지할 수 있습니다.
다중 상속 지원
여러 인터페이스에서 동일한 메서드 시그니처를 가지는 경우,
클래스에서 어떤 메서드를 호출해야 하는지 혼란이 생길 수 있다.
상수 필드의 충돌을 방지하기 위해 인터페이스에서 상수만 사용할 수 있으므로,
다중 상속 시에 메서드 충돌과 관련된 혼란을 방지할 수 있습니다.
구현 강제
인터페이스는 클래스에게 메서드 구현을 강제하기 위한 것이므로,
상수 외의 다른 필드나 변수를 정의하는 것은 인터페이스의 목적과 일치하지 않다.
정리 하자면,
자바에서는 인터페이스에서 상수만 사용 가능하도록 함으로써
인터페이스의 역할과 의도를 보다 명확하게 유지하고,
일관성과 다중 상속 지원하며, API의 설계와 확장성을 촉진한다.
인터페이스 상수 필드 주의사항
- 인터페이스에 선언된 필드는 모두 public static final이고, 생략 가능하다.
- 선언과 동시에 초기값 지정
- 정적 클래스 상수값처럼 static 블록을 통한 초기화 불가능함
'Java' 카테고리의 다른 글
DTO를 만들어 두면 무슨 장점이 있나요? (0) | 2023.11.06 |
---|---|
상속 정의 / 상속이 갖는 단점들은 무엇인가요? (0) | 2023.11.06 |
왜 모든 클래스는 Object 클래스의 상속을 받을까? (0) | 2023.11.06 |
실행을 위해서 왜 main 메서드가 필요한 것인가요? (0) | 2023.11.06 |
System.out.println() 내부 동작원리 (0) | 2023.11.06 |