인터페이스 구성
상수: public static final
public static final
抽象方法:public abstract
默认方法(Java 8)
静态方法(Java 8)
私有方法(Java 9)
我们都知道,一个类实现一个接口,就要重写这个接口中的所有抽象方法。但现在接口中新增了一个方法,实现这个接口的类不想重写这个方法怎么办?这时就可以使用接口中默认方法,它不强制被重写,而且还可以提供方法体。
接口中默认方法的定义格式:
格式:public default 返回值类型 方法名(参数列表){}
范例:public default void show(){}
接口中默认方法的注意事项:
默认方法不是抽象方法,所以不强制被重写。但是可以被重写,重写的时候去掉default关键字
public可以省略,default不能省略:default void show(){}
接口中静态方法的定义格式:
格式:public static 返回值类型 方法名(参数列表){}
范例:public static void show(){}
接口中静态方法的注意事项:
静态方法只能通过接口名调用, 不能通过实现类名或者对象名调用
public可以省略, static不能省略:static void show(){}
接口
package test; public interface Inter { void show(); default void method() { System.out.println("默认方法"); } // public static void test(){ // System.out.println("静态方法"); // } static void test(){ System.out.println("静态方法"); } }
实现类
package test; public class InterImpl implements Inter{ @Override public void show() { System.out.println("show方法"); } }
测试类
package test; public class Demo { public static void main(String[] args) { Inter i = new InterImpl(); i.show(); //show方法 i.method(); // // i.test(); //报错 Inter.test(); //静态方法,接口名调用静态方法 } }
Java 9 中新增了带方法体的私有方法,这其实在 Java 8 中就埋下了伏笔:Java 8 允许在接口中定义带方法体的默认方法和静态方法。这样可能就会引发一个问题:当两个默认方法或者静态方法中包含一段相同的代码实现时,程序必然考虑将这段实现代码抽取成一个共性方法,而这个共性方法是不需要让别人使用的,因此用私有给隐藏起来,这就是 Java 9 增加私有方法的必然性 。
接口中私有方法的定义格式:
格式1(非静态):private 返回值类型 方法名(参数列表){}
范例1:private void show() {}
格式2(静态):private static 返回值类型 方法名(参数列表){}
范例2:private static void method() {}
public abstract
기본 메서드(Java 8)
공개 기본 반환 값 유형 메서드 이름(매개변수 목록){}
🎜🎜🎜🎜예: public default void show(){}
🎜🎜🎜🎜🎜인터페이스의 기본 메서드에 대한 참고 사항:🎜🎜🎜🎜🎜기본 메서드는 추상 메서드가 아니므로 강제로 재정의되지 않습니다. 하지만 다시 작성할 때 기본 키워드를 제거하세요. 🎜🎜🎜🎜public은 생략할 수 있지만 기본값은 생략할 수 없습니다: default void show(){}
🎜🎜🎜🎜🎜1.3 정적 메서드 인터페이스(JDK8) 🎜🎜🎜🎜인터페이스의 정적 메서드 정의 형식: 🎜🎜🎜🎜🎜형식: 공개 정적 반환 값 유형 메서드 이름(매개변수 목록){}
🎜🎜🎜🎜예: public static void show(){}
🎜🎜🎜🎜🎜인터페이스의 정적 메서드에 대한 참고 사항: 🎜🎜🎜🎜🎜정적 메서드는 구현 클래스 이름이나 구현 클래스 이름이 아닌 🎜인터페이스 이름🎜을 통해서만 호출할 수 있습니다. 객체 이름 🎜🎜🎜🎜public 호출은 생략 가능, static 생략 불가: static void show(){}
🎜🎜🎜🎜🎜interface🎜🎜🎜package test; public interface Inter { default void show1() { System.out.println("show1开始执行"); // System.out.println("初级工程师"); // System.out.println("中级工程师"); // System.out.println("高级工程师"); // show(); method(); System.out.println("show1结束"); } static void method1() { System.out.println("method1开始执行"); // System.out.println("初级工程师"); // System.out.println("中级工程师"); // System.out.println("高级工程师"); method(); System.out.println("method1结束"); } private void show(){ System.out.println("初级工程师"); System.out.println("中级工程师"); System.out.println("高级工程师"); } private static void method(){ System.out.println("初级工程师"); System.out.println("中级工程师"); System.out.println("高级工程师"); } }🎜🎜🎜구현 클래스🎜🎜🎜rrreee 🎜🎜🎜테스트 클래스 🎜🎜🎜rrreee🎜1.4 인터페이스의 전용 메서드(JDK9) 🎜🎜메서드 본문이 있는 새로운 전용 메서드가 Java 9에 추가되어 실제로 Java 8의 기반이 되었습니다. Java 8에서는 인터페이스에서 메서드를 정의할 수 있습니다. 본문의 기본 및 정적 메서드입니다. 이로 인해 문제가 발생할 수 있습니다. 두 개의 기본 메소드 또는 정적 메소드에 동일한 코드 구현이 포함된 경우 프로그램은 이 구현 코드를 공통 메소드로 추출하는 것을 고려해야 하며 이 공통 메소드는 다른 사람이 사용할 필요가 없으므로 숨겨져 있습니다. 이는 Java 9에서 개인 메소드를 추가해야 하는 필요성입니다. 🎜🎜🎜🎜🎜인터페이스의 개인 메서드 정의 형식 🎜: 🎜🎜🎜🎜🎜🎜형식 1(비정적) 🎜:
개인 반환 값 유형 메서드 이름(매개변수 목록) {}
🎜🎜 🎜 🎜예 1: private void show() {}
🎜🎜🎜🎜🎜Format 2(정적)🎜: private 정적 반환 값 유형 메서드 이름(매개변수 목록){}
🎜🎜🎜🎜예 2: private static void method() {}
🎜🎜🎜🎜🎜🎜인터페이스🎜의 프라이빗 메서드에 대한 참고 사항🎜: 🎜🎜🎜🎜🎜기본 메서드는 프라이빗 정적 메서드를 호출할 수 있습니다. 비정적 메서드🎜🎜🎜🎜정적 메서드는 전용 정적 메서드만 호출할 수 있습니다🎜🎜🎜🎜rrreee위 내용은 Java 인터페이스 구성 업데이트 구현 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!