更新時間:2020-08-19 16:19:58 來源:動力節點 瀏覽2223次
很多常見的面試題都會出諸如抽象類和接口有什么區別,什么情況下會使用抽象類和什么情況你會使用接口這樣的問題。本文我們將仔細討論這些話題。
在討論它們之間的不同點之前,我們先看看抽象類、接口各自的特性。
Java抽象類
抽象類是用來捕捉子類的通用特性的。它不能被實例化,只能被用作子類的超類。抽象類是被用來創建繼承層級里子類的模板。以JDK中的GenericServlet為例:
public?abstract?class?GenericServlet?implements?Servlet,?ServletConfig,?Serializable?{
????//?abstract?method
????abstract?void?service(ServletRequest?req,?ServletResponse?res);
?
????void?init()?{
????????//?Its?implementation
????}
????//?other?method?related?to?Servlet
}
當HttpServlet類繼承GenericServlet時,它提供了service方法的實現:
public?class?HttpServlet?extends?GenericServlet?{
????void?service(ServletRequest?req,?ServletResponse?res)?{
????????//?implementation
????}
?
????protected?void?doGet(HttpServletRequest?req,?HttpServletResponse?resp)?{
????????//?Implementation
????}
?
????protected?void?doPost(HttpServletRequest?req,?HttpServletResponse?resp)?{
????????//?Implementation
????}
?
????//?some?other?methods?related?to?HttpServlet
}
Java接口
接口是抽象方法的集合。如果一個類實現了某個接口,那么它就繼承了這個接口的抽象方法。這就像契約模式,如果實現了這個接口,那么就必須確保使用這些方法。接口只是一種形式,接口自身不能做任何事情。以Externalizable接口為例:
public?interface?Externalizable?extends?Serializable?{?
????void?writeExternal(ObjectOutput?out)?throws?IOException;?
????void?readExternal(ObjectInput?in)?throws?IOException,?ClassNotFoundException;
}
當你實現這個接口時,你就需要實現上面的兩個方法:
public?class?Employee?implements?Externalizable?{
?
????int?employeeId;
????String?employeeName;
?
????@Override
????public?void?readExternal(ObjectInput?in)?throws?IOException,?ClassNotFoundException?{
????????employeeId?=?in.readInt();
????????employeeName?=?(String)?in.readObject();
?
????}
?
????@Override
????public?void?writeExternal(ObjectOutput?out)?throws?IOException?{
?
????????out.writeInt(employeeId);
????????out.writeObject(employeeName);
????}
}
抽象類和接口的對比
以上就是動力節點java培訓機構的小編針對“Java抽象類與接口有哪些區別呢”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習