色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

java中沒有抽象方法的抽象類有什么意義?僅僅是為了讓別人不能創建該類的對象?

瀏覽:172日期:2024-02-15 14:36:02

問題描述

問題解答

回答1:

最常用到的地方就是實現模板方法(Template Method)?舉個例子,你要寫一批遠程服務的本地代理。對于這批代理來說,獲取請求地址、發送請求、獲取相應內容的步驟都是公共的。只有定義字符編碼類型、定義響應回調兩個步驟是差異的。

這時候就可以定義一個抽象類,把請求過程都寫完。而將差異的部分留給實際的子類去定義。不是設計者【不讓】抽象類實例化,而是在知道遠程服務的特性前無法確定一些屬性,從而不可能實例化。

JDK中的例子就是 java.io.InputStream。它的 read(byte[], int, int) 方法調用了 java.io.InputStream.read() 方法。而read()是一個抽象方法,需要在子類中定義。你可以看源碼學習一下。

public abstract int read() throws IOException; public int read(byte b[], int off, int len) throws IOException { if (b == null) {throw new NullPointerException(); } else if (off < 0 || len < 0 || len > b.length - off) {throw new IndexOutOfBoundsException(); } else if (len == 0) {return 0; } int c = read(); if (c == -1) {return -1; } b[off] = (byte)c; int i = 1; try {for (; i < len ; i++) { c = read(); if (c == -1) {break; } b[off + i] = (byte)c;} } catch (IOException ee) { } return i;}回答2:

你得看看它是否繼承了什么類或者實現了什么接口

很有可能放置了一些共用方法

如果沒有,不如改成接口

回答3:

可能提取了一些公共方法和實例字段。

回答4:

應該不是說沒有抽象方法的抽象類有特殊的意義,只是抽象類的普通意義,給出默認實現,比直接實現接口可能會少些部分代碼。反過來說,硬是要求一個抽象類保留一個兩個抽象方法有什么意義?

回答5:

說反了,是為了讓這個類的子類必須創建這個某些方法。當然這也是接口的要求,但是接口要求所有方法都是抽象方法。但是抽象類可以預先定義一些不需要子類必須重載的方法。

抽象類和接口都是為了抽象,抽象的好處就不說了。比如我們要實現一個Equal接口或是類,定義兩個方法 equal 和 unequal。如果用接口實現,一個類必須實現這兩個方法。可是如果用抽象類實現,可以把unequal在抽象類里實現為!equal,這樣在其子類里就需要再實現unequal了。

個人來說更喜歡抽象類一點兒(可是Java不支持多繼承)。比如Compareable接口其實還有一個要求,如果a<b && b < c 則 a < c,接口里不能保證這是正確的。當然抽象類也解決不了,但是對于上面的Equal,抽象類實現起來更符合額外的要求。

回答6:

例子:基于:spring mvc

public abstract class BaseController { protected HttpServletRequest request; protected HttpServletResponse response; protected HttpSession session; @ModelAttribute public void setReqAndResp(HttpServletRequest request, HttpServletResponse response){this.request = request;this.response = response;this.session = request.getSession(); } protected Map<String,String> getLoginUser(){Object loginUser = request.getAttribute(Config.LOGIN_USER);Map<String,String> loginUserMap = new HashMap<>();loginUserMap.put(Config.USER_CODE,loginUser==null?'':loginUser.toString());return loginUserMap; //return (User) session.getAttribute(Constants.LOGIN_USER); }}

通用的全局屬性 request response session 通用的方法getLoginUser() 當然 還會有其它的(一些通用的屬性和方法)。 既然有controller 那么service dao 也可以。我一般都 是把一些重置的代碼 抽到父類里 使用。

標簽: java
相關文章:
主站蜘蛛池模板: 欧美在线一级va免费观看 | 一级毛片情侣 | 午夜大片免费男女爽爽影院久久 | 九九国产精品九九 | 一级毛片免费完整视频 | 91热久久免费精品99 | 一级欧美过瘾大片 | 国产精品成aⅴ人片在线观看 | 小泽玛利亚的一级毛片的 | 免费欧洲毛片a级视频无风险 | 国产在线观看免费视频软件 | 久久综合婷婷 | 国产视频自拍偷拍 | 国产精品资源在线 | 手机看片高清国产日韩片 | 日韩亚洲欧美一区二区三区 | 91精品乱码一区二区三区 | 5x性区m免费毛片视频看看 | 国产视频高清在线 | 成人精品视频一区二区三区 | 天天躁天天碰天天看 | 日韩特黄特色大片免费视频 | 偷拍第1页 | 特级淫片欧美高清视频蜜桃 | 欧美日韩一区二区在线观看 | 国产成人精品曰本亚洲78 | 能在线观看的一区二区三区 | 国产精品视频九九九 | 欧美三级网站 | 国产黄色一级毛片 | 亚洲欧美一区二区三区在饯 | 特级毛片 | 成a人片亚洲日本久久 | 欧美做爰孕妇群 | 自拍视频在线观看 | 亚洲精品99久久久久久 | 国产欧美一区二区日本加勒比 | 欧美成年黄网站色高清视频 | 日本巨乳中文字幕 | 特级a毛片 | 国产精品久久久久影视不卡 |