왜 자바 의 한 종 류 는 여러 개의 인 터 페 이 스 를 실현 할 수 있 지만 한 종류 만 계승 할 수 있 습 니까?

다 중 계승 은 다이아몬드 문제(마름모꼴 계승)가 발생 합 니 다.
클래스 B 와 클래스 C 는 클래스 A 를 계승 하고 클래스 A 의 같은 방법 을 다시 썼 다클래스 D 는 클래스 B 와 클래스 C 를 동시에 계승 했다4.567917.류 B,C 가 다시 쓰 는 류 A 중의 방법 에 대해 류 D 는 어떤 것 을 계승 합 니까?여기 서 나 쁜 뜻 이 생 긴 다.
  • 이러한 이의 성 문 제 를 고려 하여 자바 는 다 중 계승 을 지원 하지 않 습 니 다
  • 자바 지원 클래스 다 중 인터페이스 구현
    4.567917.인터페이스 중의 방법 은 추상 적 인 것 이 고 한 가지 유형 은 여러 개의 인 터 페 이 스 를 실현 할 수 있다.
    4.567917.이런 인터페이스 에 똑 같은 방법(방법 명 과 매개 변수 가 같다)이 존재 한다 고 가정 하면 인 터 페 이 스 를 실현 할 때 이 방법 은 유형 을 실현 해 야 하 며 이의 적 인 문제 가 발생 하지 않 는 다JDK 1.8 부터 인터페이스 에 정적 방법 과 방법 이 기본적으로 실 현 될 수 있 습 니 다.구현 클래스 에서 실 현 된 여러 인터페이스 에서 같은 기본 구현 방법 이 있 음 을 감지 하면 컴 파일 오류 가 발생 합 니 다.
    PS:JDK 1.5 에서 실천 하면 인 터 페 이 스 를 많이 계승 할 수 있 습 니 다.
    package constxiong.interview;
    
    /**
     *        ,      
     *   JDK1.8   ,                 
     *                             ,    
     * @author ConstXiong
     * @date 2019-11-21 10:58:33
     */
    public class TestImplementsMulitInterface implements InterfaceA, InterfaceB {
    
    	public void hello() {
    		System.out.println("hello");
    	}
    
    }
    
    interface InterfaceA {
    	
    	void hello();
    
    	static void sayHello() {
    		System.out.println("InterfaceA static: say hello");
    	}
    
    	default void sayBye() {
    		System.out.println("InterfaceA default: say bye");
    	}
    }
    
    interface InterfaceB {
    	
    	void hello();
    	
    	static void sayHello() {
    		System.out.println("InterfaceB static: say hello");
    	}
    
    //	default void sayBye() {
    //		System.out.println("InterfaceB default: say bye");
    //	}
    }
    

     
    [자바 면접 문제 와 정 답]정리 추천.
    기초 와 문법
    집합
    네트워크 프로 그래 밍
    동시 프로 그래 밍
  • Web

  • 안전
    디자인 모델
    프레임 워 크
    알고리즘 과 데이터 구조
    이상
    파일 분석 및 생 성
  • Linux
  • MySQL
  • Oracle
  • Redis
  • Dubbo

  • 좋은 웹페이지 즐겨찾기