본문 바로가기

패스트캠퍼스 환급 챌린지

[패스트캠퍼스 수강 후기] {자바 인강} 100% 환급 챌린지 {16} 회차 미션

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) 되었다 라고 합니다.)

출처: siyoon210.tistory.com/95

 

자바의 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