Java中實現接口的三種方式,您造嗎?
本文介紹了Java中實現接口的三種方式:常規實現方式、匿名內部類和 Lambda表達式實現方式。希望已經了解的同學可以重新溫習一下,不了解的同學則從中受益!
Java中接口最常規的實現方式
同學們都會知道,java中實現接口的方法通常如下:
定義接口
定義類實現接口
類中重寫接口里的方法
創建類對象
調用重寫后的方法
代碼實現如下:
- //定義一個接口
- public interface ITest {
- public void func1();
- }
- //類實現該接口
- public class CTest implements ITest {
- @Override
- public void func1() {
- System.out.println("This is func1");
- }
- }
- //調用類中,調用方法func1()
- CTest ct=new CTest();
- ct.func1();
通過匿名內部類實現
匿名內部類顧名思義也就是沒有名字的內部類,它通常用來簡化代碼編寫。使用匿名內部類還有個前提條件:必須存在繼承和實現關系的時候才可以使用!
不多說,直接上匿名內部類實現接口的代碼
- //定義一個接口
- public interface ITest {
- public void func1();
- }
- //調用類中直接實現接口中定義的方法,然后直接調
- ITest it1 = new ITest() {
- @Override
- public void func1() {
- System.out.println("This is func1 by anonymous");
- }
- };
- it1.func1();
- //或者寫成:
- new ITest() {
- @Override
- public void func1() {
- System.out.println("This is func1 by anonymous");
- }
- }. func1()
- //如果需要接口中的兩個方法,這種寫法則不夠友好,因為一次只能調用一個方法
大家可以看到上面的代碼直接new了接口ITest(),然后重寫了方法func1,調用接口中方法的過程被大大優化了!通過匿名內部類只需要定義接口(ITest),無需定義這個接口的具體實現類(CTest)了。所以大家以后看到接口被new 然后直接實現里面方法的寫法時,千萬不要感到驚訝,這只是內部類實現接口的方法而已。
通過lambda表達式來實現
Java 8 Lambda表達式在只有一個方法的接口實現代碼編寫中,可以起到簡化作用。
注意:這里特殊強調在只有一個方法的接口中!否則提示如下錯誤:
Multiple non-overriding abstract methods found in interface ***
代碼實現如下:
- //定義一個接口
- public interface ITest {
- public void func1();
- }
- //調用類中直接實現接口中定義的方法,然后直接調
- ITest it2 =()->{System.out.println("This is func1 by Lambda");};
- it2.func1();