面向介面程式設計還有一些好處:
1.一個功能的呼叫者只需要關心如何使用此功能,而無須關注功能的實現。
如:如我們在main 方法中呼叫一個client程式,我們只需要Client client = new ClientImpl(),無論 ClientImpl 類中定義了多麼複雜的成員函式和成員變數(包括javadoc),你都看不到,你也無須看到。
2.面向介面程式設計便於團隊合作,有了統一的介面(介面是公開的,裡面的方法都是public的),無須擔心別人的程式無法使用我的實現(他根本就不關心)。假如我們團隊正在做一個計算器小程式,想要計算1+2+...+100=?,product manager 寫了一個介面,讓兩個員工分別實現,他最後看那個程式演算法算得快,於是這兩個員工就對介面分別做了實現。PM只需要寫一個程式就可以評估他們的演算法。
public int getTime(Interface in){
int a = System.currentTime();
in.run();
return Sustem.currentTime()-a;
}
試想一下,如果沒有介面,這個經理必須分別new這兩個員工的class,然後呼叫可能不同的方法(A:run(), B:go())來執行。
3.(回答你的問題)介面的繼承關注的是功能的擴充套件,而不是程式碼的修改。class的繼承就是功能性程式碼的增加。兩者關注的焦點不同。
本人觀點:
我個人認為,介面一旦設計好了,很少需要修改,除非業務邏輯或需求有較大變動。
多繼承的用途(只是舉個例子):
如,SUN對一項技術寫了一個規範如J2EE的JMS規範,很多vender在自己的應用伺服器(如WebSphere, WebLogic, Jboss等)都要實現這一個規範,故且把這個規範叫做介面,每個vender想要對這個規範新增自己獨特的功能,怎麼辦呢?就是用介面的繼承,然後對繼承了的介面做實現。
舉個例子:
public interface InterfaceA {
public void method1();
}
public interface InterfaceB {
public void method2();
}
public interface InterfaceAB extends InterfaceA, InterfaceB{
public void method3();
}
public class InterfaceAImpl implements InterfaceA {
@Override
public void method1() {
System.out.println("The implemention of InterfaceA.");
}
}
public class InterfaceBImpl implements InterfaceB {
@Override
public void method2() {
System.out.println("The implemention of InterfaceB.");
}
}
public class InterfaceABImpl implements InterfaceAB {
@Override
public void method1() {
System.out.println("The implemention of InterfaceAB(method1).");
}
@Override
public void method2() {
System.out.println("The implemention of InterfaceAB(method2).");
}
@Override
public void method3() {
System.out.println("The implemention of InterfaceAB(method3).");
}
}
public class Main {
public static void main(String[] args) {
InterfaceA a = new InterfaceABImpl();
InterfaceB b = new InterfaceABImpl();
InterfaceAB ab = new InterfaceABImpl();
a.method1();
b.method2();
ab.method3();
}
}
利用多型(向上轉型),我們就可以達到不同vender間介面的統一。
總之,這種情況我很少見,主要用1、2的特性。
相關文章
- 面向介面程式設計程式設計
- 面向介面的程式設計+MVC程式設計MVC
- 女生學程式設計有哪些好處呢?程式設計
- 面向協議程式設計的一些思考協議程式設計
- java 介面,介面的特性,介面實現多型,面向介面程式設計Java多型程式設計
- go 模仿JAVA,面向介面/鏈式程式設計GoJava程式設計
- 面向介面程式設計實踐之aspnetcoreapi的抽象程式設計NetCoreAPI抽象
- 一篇帶你入門面向介面程式設計程式設計
- 程式設計思想 面向切面程式設計程式設計
- 程式設計,不止有程式碼,還有藝術程式設計
- 好程式設計師Java教程分享List介面程式設計師Java
- AOP(面向切面程式設計)程式設計
- AOP 面向切面程式設計程式設計
- 面向架構程式設計架構程式設計
- 面向切片程式設計(AOP)應用的一些實際例子程式設計
- 好程式設計師分享Vue的一些小技巧程式設計師Vue
- 高階的網站設計有哪些好處?網站
- 設計模式之面向切面程式設計AOP設計模式程式設計
- springboot~通過面向介面程式設計對控制反轉IOC的理解Spring Boot程式設計
- React Native面向切面程式設計React Native程式設計
- Spring 面向方面程式設計 AOPSpring程式設計
- AOP--面向切面程式設計程式設計
- 好程式設計師Web前端分享一些小知識!程式設計師Web前端
- 什麼是程式碼審計?程式碼審計有什麼好處?
- 如果今天沒有API介面,今天的程式設計師如何程式設計?API程式設計師
- 除了程式設計還有其它的要學程式設計
- 別罵了,其實低程式碼平臺對程式設計師有這些好處!程式設計師
- 面向sql程式設計的探索之路SQL程式設計
- 淺析面向協議程式設計協議程式設計
- 前端js面向切面程式設計(AOP)前端JS程式設計
- 四、Spring-面向切面程式設計Spring程式設計
- Spring之AOP面向切面程式設計Spring程式設計
- 面向資料的程式設計 · Laurent程式設計
- 好程式設計師分享-疫情過後 學哪個程式設計有前景程式設計師
- 程式設計師畢業去大公司好還是小公司好?程式設計師
- 程式設計師最重要的一點_面向金錢程式設計程式設計師
- 萬萬沒想到,學習風變程式設計Python課程還有這個用處程式設計Python
- 前端解讀面向切面程式設計(AOP)前端程式設計
- 01.AOP(AspectOrientatedProgramming面向切面程式設計)程式設計