Rumah >Java >javaTutorial >Bagaimana untuk melaksanakan kemas kini komposisi antara muka Java
Komposisi antara muka
Malar: public static final
Kaedah abstrak: public abstract
Kaedah lalai (Java 8)
Kaedah statik ( Java 8)
Kaedah peribadi (Java 9)
Kita semua tahu bahawa jika kelas melaksanakan antara muka, ia mesti menulis semula semua kaedah abstrak dalam antara muka ini. Tetapi kini terdapat kaedah baru dalam antara muka Apakah yang perlu saya lakukan jika kelas yang melaksanakan antara muka ini tidak mahu mengatasi kaedah ini? Pada masa ini, anda boleh menggunakan kaedah lalai dalam antara muka, yang tidak dipaksa untuk ditindih dan juga boleh menyediakan badan kaedah.
Format definisi kaedah lalai dalam antara muka:
Format: public default 返回值类型 方法名(参数列表){}
Contoh: public default void show(){}
Nota mengenai kaedah lalai dalam antara muka:
Kaedah lalai bukan kaedah abstrak , jadi ia tidak dipaksa untuk ditulis semula. Tetapi ia boleh ditulis semula Apabila menulis semula, alih keluar kata kunci lalai
awam boleh ditinggalkan, tetapi lalai tidak boleh ditinggalkan: default void show(){}
Format definisi kaedah statik dalam antara muka:
Format: public static 返回值类型 方法名(参数列表){}
Contoh: public static void show(){}
Nota tentang kaedah statik dalam antara muka:
Kaedah statik hanya boleh dipanggil melalui nama antara muka, dan tidak boleh dipanggil melalui nama kelas pelaksanaan atau nama objek
awam boleh diabaikan, statik tidak boleh ditinggalkan:static void show(){}
Antaramuka
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("静态方法"); } }
Kelas pelaksanaan
package test; public class InterImpl implements Inter{ @Override public void show() { System.out.println("show方法"); } }
Kelas ujian
package test; public class Demo { public static void main(String[] args) { Inter i = new InterImpl(); i.show(); //show方法 i.method(); // // i.test(); //报错 Inter.test(); //静态方法,接口名调用静态方法 } }
Kaedah peribadi baharu dengan kaedah badan ditambah dalam Java 9. Ini sebenarnya dibayangkan dalam Java 8: Java 8 membenarkan kaedah lalai dan kaedah statik dengan badan kaedah ditakrifkan dalam antara muka. Ini mungkin menyebabkan masalah: apabila dua kaedah lalai atau kaedah statik mengandungi pelaksanaan kod yang sama, program mesti mempertimbangkan untuk mengekstrak kod pelaksanaan ini ke dalam kaedah biasa, dan kaedah biasa ini tidak perlu digunakan oleh orang lain, jadi ia disembunyikan secara peribadi. Ini adalah keperluan untuk menambah kaedah peribadi dalam Java 9.
Format definisi kaedah persendirian dalam antara muka :
Format 1 (bukan statik ) :private 返回值类型 方法名(参数列表){}
Contoh 1:private void show() {}
Format 2 (statik) : private static 返回值类型 方法名(参数列表){}
Contoh 2:private static void method() {}
Nota tentang kaedah persendirian dalam antara muka:
Kaedah lalai boleh memanggil kaedah statik persendirian dan kaedah bukan statik
Kaedah statik hanya boleh memanggil kaedah statik persendirian
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("高级工程师"); } }
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan kemas kini komposisi antara muka Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!