자바 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()류 는LocationVillage인 터 페 이 스 를 동시에 실현 할 것 이다.CityVillage모두 동명 의 결 성 방법 을 포함 하기 때문에 잘못된 의미 가 존재 하기 때문에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 의 새로운 기능 인터페이스 에 있 는 기본 방법 과 정적 방법 에 대한 자세 한 설명 은 여기까지 입 니 다.더 많은 자바 기본 방법 과 정적 방법 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 을 바 랍 니 다!

좋은 웹페이지 즐겨찾기