1. 인터페이스의 요소
Default Method
인터페이스는 기능에 대한 선언만 가능하기 때문에, 실제 코드를 구현한 로직은 포함될 수 없습니다. 하지만 자바8에서 이러한 룰을 깨트리는 기능이 나오게 되었는 데, 그것이 Default Method(디펄트 메소드)입니다. 메소드 선언시에 default를 명시하게 되면 인터페이스 내부에서도 코드가 포함된 메소드를 선언 할 수 있습니다. (접근제어자에서 사용하는 default와 같은 키워드 이지만, 접근제어자는 아무것도 명시 하지 않은 접근 제어자를 default라고 하며 인터페이스의 default method는 'default'라는 키워드를 명시해야 합니다.)
interface MyInterface { default void printHello() { System.out.println("Hello World"); } }
default라는 키워드를 메소드에 명시하게 되면 인터페이스 내부라도 코드를 작성 할 수 있습니다.
왜 사용할까?
사실 인터페이스는 기능에 대한 구현보다는, 기능에 대한 '선언'에 초점을 맞추어서 사용 하는데, 디펄트 메소드는 왜 등장 했을까요? 자바 기본서 '자바의 신'에서는 디펄트 메소드에 대한 존재 이유를 아래와 같이 설명했습니다.
...(중략) ... 바로 "하위 호환성"때문이다. 예를 들어 설명하자면, 여러분들이 만약 오픈 소스코드를 만들었다고 가정하자. 그 오픈소스가 엄청 유명해져서 전 세계 사람들이 다 사용하고 있는데, 인터페이스에 새로운 메소드를 만들어야 하는 상황이 발생했다. 자칫 잘못하면 내가 만든 오픈소스를 사용한 사람들은 전부 오류가 발생하고 수정을 해야 하는 일이 발생할 수도 있다. 이럴 때 사용하는 것이 바로 default 메소드다. (자바의 신 2권)
기존에 존재하던 인터페이스를 이용하여서 구현된 클래스를 만들고 사용하고 있는데, 인터페이스를 보완하는 과정에서 추가적으로 구현해야 할, 혹은 필수적으로 존재해야 할 메소드가 있다면, 이미 이 인터페이스를 구현한 클래스와의 호환성이 떨어 지게 됩니다. 이러한 경우 default 메소드를 추가하게 된다면 하위 호환성은 유지되고 인터페이스의 보완을 진행 할 수 있습니다. 실제로 스프링 프레임 워크 버전 4에서 WebMvcConfigure라는 인터페이스를 구현한 클래스 WebMvcConfigurerAdapter를 사용하였지만 자바8에서 default 메소드가 등장하고 WebMvcConfigurerAdapter클래스는 더 이상 사용되지 않습니다. (정확히는 디프리케이티드 (deprecated) 되었다 라고 합니다.)
자바의 Default Method (디펄트 메소드)
Default Method 인터페이스는 기능에 대한 선언만 가능하기 때문에, 실제 코드를 구현한 로직은 포함될 수 없습니다. 하지만 자바8에서 이러한 룰을 깨트리는 기능이 나오게 되었는 데, 그것이 Default
siyoon210.tistory.com
2. 다형성 보충
1. 업 캐스팅.
- 특정 객체가 하위 클래스의 형에서 상위의 클래스의 형으로 캐스팅 되는것.
- 업캐스팅은 다음과 같은 기술과 연결된다.
*상속, 오버라이딩, 가상메서드, 추상클래스, 인터페이스.
-일반적인 캐스팅의 원리는 작은 것이 큰 것으로 될수 있다는 것이다.
-상위클래스의 메소드를 호출했지만 하위클래스에서 같은 이름으로 메소드가 정의 되었다면 하위클래스의 메소드를 호출하게 된다.
물론, 하위클래스에서 정의 되지 않았으면 상위클래스의 메소드를 호출한다.
출처: https://wakeupjava.tistory.com/entry/다형성-업캐스팅-다운캐스팅
다형성 - 업캐스팅, 다운캐스팅
1. 업 캐스팅. - 특정 객체가 하위 클래스의 형에서 상위의 클래스의 형으로 캐스팅 되는것. - 업캐스팅은 다음과 같은 기술과 연결된다. *상속, 오버라이딩, 가상메서드, 추상클래스, 인터페이
blog.waker.me
올인원 패키지 : JAVA 웹 개발 마스터👉https://bit.ly/35aoeAW
'패스트캠퍼스 환급 챌린지' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] {자바 인강} 100% 환급 챌린지 {18} 회차 미션 (0) | 2020.11.20 |
---|---|
[패스트캠퍼스 수강 후기] {자바 인강} 100% 환급 챌린지 {17} 회차 미션 (0) | 2020.11.19 |
[패스트캠퍼스 수강 후기] {자바 인강} 100% 환급 챌린지 {15} 회차 미션 (0) | 2020.11.17 |
[패스트캠퍼스 수강 후기] {자바 인강} 100% 환급 챌린지 {14} 회차 미션 (0) | 2020.11.16 |
[패스트캠퍼스 수강 후기] {자바 인강} 100% 환급 챌린지 {14} 회차 미션 (0) | 2020.11.15 |