자바 8 새로운 기능 의 인터페이스 에서 기본 방법 과 정적 방법 에 대한 상세 한 설명
자바 8 은 기본 방법 과 인터페이스 에서 정의 할 수 있 는 정적 방법 을 도입 했다.
기본 방법 은 일반적인
java
방법 이지 만default
키워드 로 시작 하여 정적 방법 은 평소 처럼static
키워드 로 설명 합 니 다.2.왜 자바 인터페이스 에서 기본 방법 을 사용 합 니까?
왜
java
인터페이스 에 기본 방법 을 도 입 했 습 니까?트랙터 제조 사가 트랙 터 를 조작 하 는 표준 인 터 페 이 스 를 발표 했다 고 가정 하 자.예 를 들 어 기 어 를 걸 거나 주차 하 는 등 이다.
개발 자 들 은 표준 트랙터 인 터 페 이 스 를 실현 하기 위해 다양한 종류의 트랙 터 를 개발 했다.
만약 회사 가 표준 인터페이스 에 새로운 기능 을 추가 했다 면,예 를 들 어 어떻게 트랙 터 를 뛰 어 넘 습 니까?
개발 자 는 그들의 종 류 를 수정 하여 새로운 방법 을 정의 해 야 합 니 다.이것 은 좋 은 방법 이 아 닙 니 다.
표준 트랙터 인 터 페 이 스 를 실현 하 는 모든 종 류 를 다시 쓰 지 않도록 기본 적 인 방법 이 필요 하 다.
인터페이스 에서 기본 방법 을 정의 합 니 다.트랙터 인 터 페 이 스 를 실현 하 는 모든 클래스 에서 사용 할 수 있 습 니 다.
3.왜 자바 인터페이스 에서 정적 방법 을 사용 합 니까?
Java 8
부터 인 터 페 이 스 는 정적 인 방법 을 가 질 수 있다.정적 방법 은 클래스 와 연결 되 며 대상 과 연결 되 지 않 습 니 다.정적 방법 은 보조 방법 으로 쓰 인 다.
그래서 만약 에 우리 가 인터페이스 에서 정적 방법 을 설명 한다 면 우 리 는 우리 의 보조 방법 을 쉽게 조직 할 수 있다.
4.장면 1:인터페이스 의 기본 방법
기본 적 인 방법 을 이해 하기 위해 서 나 는 인터페이스
Village
를 만 들 었 다.그것 은 몇 가지 방법 으로 설명 하고 기본 적 인 방법 이 있다.기본 방법 은
default
키워드 로 시작 합 니 다.기본적으로 인터페이스의 모든 방법 은 공공 이기 때문에
public
키 워드 를 사용 하여 인터페이스의 방법 을 설명 하고 정의 할 필요 가 없다.Village.java
public interface Village {
void setNumOfPeople(int num);
void setName(String name);
default String getBusinessType(){
return "Most of the Village people do Farming";
}
}
Village
인 터 페 이 스 를 실현 할Location
클래스 를 만 듭 니 다.기본 방법 은 자동 으로 이 중에서 사용 할 수 있 습 니 다.
Location.java
public class Location implements Village {
public int noOfPeople;
public String name;
@Override
public void setNumOfPeople(int n){
this.noOfPeople = n;
}
@Override
public void setName(String name){
this.name = name;
}
}
이 방안 을 테스트 하기 위해Main
클래스 를 만 들 고Location
대상 을 통 해 기본 방법 에 접근 합 니 다.Main.java
public class Main {
public static void main(String[] args){
Location lo = new Location();
System.out.println(lo.getBusinessType());
}
}
출력Most of the Village people do Farming
5.장면 2:인터페이스 에서 의 정적 방법
이제 우리 도 인터페이스 에서 정적 방법 을 쓸 수 있다.우리 의
Village
인터페이스 에서 나 는 이미getVillageId()
을 정적 방법 으로 성명 했다.이 정적 방법 도 기본 방법 에서 접근 할 수 있다.
public interface Village {
void setNumOfPeople(int num);
void setName(String name);
static int getVillageId(){
return 1;
}
default String getBusinessType(){
return "Business type is Farming and village id:"+getVillageId();
}
}
나 는 정적 인 방법 을 사용 하기 위해Location
류 를 수정 했다.우 리 는 인터페이스 이름 을 통 해 정적 방법 을 사용 할 수 있다.
public class Location implements Village {
public int noOfPeople;
public String name;
@Override
public void setNumOfPeople(int n){
this.noOfPeople = n;
}
@Override
public void setName(String name){
this.name = name;
}
public int getLocationId(){
return Village.getVillageId();
}
Main.java
public class Main {
public static void main(String[] args){
Location lo = new Location();
System.out.println(lo.getBusinessType());
System.out.println("Village id:"+Village.getVillageId());
System.out.println("Location Id:"+lo.getLocationId());
}
}
출력Business type is Farming and village id:1
Village id:1
Location Id:1
6.상황 3:다 중 계승-두 인터페이스 에서 같은 이름 을 사용 하 는 기본 방법
다 중 계승 상황 에서 한 가지 유형 은 하나의 인터페이스 만 실현 하 는 것 이 아니 라 우 리 는 기본 적 인 방법 을 검사 해 야 한다.
현재 기본 방법 을 포함 하 는 인 터 페 이 스 를 만 들 고 있 습 니 다.
City.java
public interface City {
void setName(String name);
void setArea(int area);
default String getBusinessType(){
return "Service";
}
}
다 중 계승 에 대해getBusinessType()
류 는Location
과Village
인 터 페 이 스 를 동시에 실현 할 것 이다.City
과Village
모두 동명 의 결 성 방법 을 포함 하기 때문에 잘못된 의미 가 존재 하기 때문에City
류 는 클래스 에서 결 성 방법 을 명 확 히 정의 하도록 강제 할 것 이다.기본 방법 과 같은 이름 의 방법 을 정의 하지 않 으 면
Location
클래스 는 컴 파일 되 지 않 습 니 다.Location.java
public class Location implements Village, City {
public int noOfPeople;
public String name;
public int area;
@Override
public void setNumOfPeople(int n){
this.noOfPeople = n;
}
@Override
public void setName(String name){
this.name = name;
}
@Override
public void setArea(int area){
this.area = area;
}
@Override
public String getBusinessType(){
return "People do business like Farming and Service.";
}
public int getLocationId(){
return Village.getVillageId();
}
}
출력People do business like Farming and Service.
Village id:1
Location Id:1
참고 문헌
【1】Java 8 Default and Static Method in Interface
자바 8 의 새로운 기능 인터페이스 에 있 는 기본 방법 과 정적 방법 에 대한 자세 한 설명 은 여기까지 입 니 다.더 많은 자바 기본 방법 과 정적 방법 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 을 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.