91丨国产丨白浆秘 喷水,国产熟妇毛多 A片欧美蜜臀,北京熟妇搡BBBB搡BBBB,国产精品人人做人人爽人人添

  您的位置: 【卓安特保-您身邊的護(hù)衛(wèi)專家】山東卓安安防工程有限公司,電話13361029977 >> 安防資訊 >> 卓安安防 >> JAVA編程
 閱讀文章

關(guān)于面向?qū)ο笠约叭筇卣鞯慕忉?/b>

  文章作者:網(wǎng)絡(luò)來源:網(wǎng)絡(luò)轉(zhuǎn)摘瀏覽次數(shù):8827字體:字體顏色
 閱讀權(quán)限:游客身份花費(fèi)會員幣:0添加時間:2020/4/14 22:48:01提交會員:李漠

卓安特保|山東卓安|聯(lián)網(wǎng)報警|濟(jì)南監(jiān)控安裝|15562629707|13361029977|李田軍

關(guān)于面向?qū)ο笠约叭筇卣鞯慕忉?/SPAN>

面向?qū)ο螅?/SPAN>

 C語言編程中是面向過程而在Java編程中是面向?qū)ο蟮?/SPAN>。面向過程更重要的是看重實(shí)現(xiàn)的具體過程,面向?qū)ο罂粗氐氖墙Y(jié)果,不管其里面的具體過程,只看結(jié)果。

   舉一個例子:我們從住的地方到公司去上班的方法:一個是自己開車一個是打車

 面向過程:就是相當(dāng)于自己開車,自己需要去關(guān)注行駛的路線,同時還要自己開車。

 面向?qū)ο螅壕褪窍喈?dāng)于打車,自己不用關(guān)心具體怎么走,你只需要將地點(diǎn)告訴司機(jī)就可以了,只管最后到達(dá)公司。

面向?qū)ο竽壳笆橇餍械囊环N編程思想,它貼近于我們的生活,滿足大自然的規(guī)律。面向?qū)ο笥腥筇卣鳎?/SPAN>封裝、繼承、多態(tài)。

封裝:

    面向?qū)ο缶褪且苑庋b為基本,封裝就是對外只提供使用,對內(nèi)部的方法和數(shù)據(jù)進(jìn)行包裝對面隱藏,能夠保證模塊的獨(dú)立性。

詳解:封裝,就是把客觀事物封裝成抽象的類,并且類可以把自己的數(shù)據(jù)和方法只讓可信的類或者對象操作,對不可信的進(jìn)行信息隱藏。一個類就是一個封裝了數(shù)據(jù)以及操作這些數(shù)據(jù)的代碼的邏輯實(shí)體。在一個對象內(nèi)部,某些代碼或某些數(shù)據(jù)可以是私有的,不能被外界訪問。通過這種方式,對象對內(nèi)部數(shù)據(jù)提供了不同級別的保護(hù),以防止程序中無關(guān)的部分意外的改變或錯誤的使用了對象的私有部分。

繼承:

    自己新寫一個類可以從已有的類(基類)派生出來,派生出來的類是子類,基類是父類。子類可以從父類那里繼承到方法和實(shí)例變量,并且可以修改和增加方法來滿足當(dāng)前的需要通過繼承可以滿足代碼的重用性。繼承分為類繼承和實(shí)現(xiàn)接口。

繼承類:一個類只能繼承一個類,這跟現(xiàn)實(shí)生活中也是一樣的。有普通類和抽象類,繼承抽象類必須實(shí)現(xiàn)里面的抽象方法;

實(shí)現(xiàn)接口:實(shí)現(xiàn)接口必須實(shí)現(xiàn)里面所有的方法,一個類可以實(shí)現(xiàn)多個接口。

    在這里有必要說一下接口和抽象方法的區(qū)別:

    接口:接口是一組行為規(guī)范的定義,通俗的說就是生產(chǎn)一個東西時要滿足的功能。定義接口時里面的方法都是抽象方法,變量都是默認(rèn)public static final,方法隱式指定為public abstract。可以實(shí)現(xiàn)多個接口。

    抽象方法:抽象方法是表示對象的根源,通俗的說就是兩個東西的祖宗是什么,比如說貓和狗都是動物。抽象方法可以部分方法是實(shí)現(xiàn)方法,部分是抽象方法,只能繼承一個抽象類。

抽象方法和接口的比較如下:

在討論它們之間的不同點(diǎn)之前,我們先看看抽象類、接口各自的特性。

抽象類

抽象類是用來捕捉子類的通用特性的 。它不能被實(shí)例化,只能被用作子類的超類。抽象類是被用來創(chuàng)建繼承層級里子類的模板。以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

}

當(dāng)HttpServlet類繼承GenericServlet時,它提供了service方法的實(shí)現(xiàn):

 

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

}

接口

接口是抽象方法的集合。如果一個類實(shí)現(xiàn)了某個接口,那么它就繼承了這個接口的抽象方法。這就像契約模式,如果實(shí)現(xiàn)了這個接口,那么就必須確保使用這些方法。接口只是一種形式,接口自身不能做任何事情。以Externalizable接口為例

 

public interface Externalizable extends Serializable {

 

void writeExternal(ObjectOutput out) throws IOException;

 

void readExternal(ObjectInput in) throws IOException, ClassNotFoundException;

}

當(dāng)你實(shí)現(xiàn)這個接口時,你就需要實(shí)現(xiàn)上面的兩個方法:

 

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);

}

}

抽象類和接口的對比(速度 添加 默認(rèn) 實(shí)現(xiàn) 訪問Java main

  參數(shù)

抽象類

接口

 默認(rèn)的方法實(shí)現(xiàn)

它可以有默認(rèn)的方法實(shí)現(xiàn)

 接口完全是抽象的。它根本不存在方法的實(shí)現(xiàn)

 實(shí)現(xiàn)

子類使用extends關(guān)鍵字來繼承抽象類。如果子類不是抽象類的話,它需要提供抽象類中所有聲明的方法的實(shí)現(xiàn)。

 子類使用關(guān)鍵字implements來實(shí)現(xiàn)接口。它需要提供接口中所有聲明的方法的實(shí)現(xiàn)

 構(gòu)造器

 抽象類可以有構(gòu)造器

 接口不能有構(gòu)造器

 與正常Java類的區(qū)別

 除了你不能實(shí)例化抽象類之外,它和普通Java類沒有任何區(qū)別

 接口是完全不同的類型

 訪問修飾符

 抽象方法可以有public、protecteddefault這些修飾符

 接口方法默認(rèn)修飾符是public。你不可以使用其它修飾符。

 main方法

 抽象方法可以有main方法并且我們可以運(yùn)行它

 接口沒有main方法,因此我們不能運(yùn)行它。

 多繼承

 抽象方法可以繼承一個類和實(shí)現(xiàn)多個接口

 接口只可以繼承一個或多個其它接口

 速度

它比接口速度要快

 接口是稍微有點(diǎn)慢的,因?yàn)樗枰獣r間去尋找在類中實(shí)現(xiàn)的方法。

 添加新方法

如果你往抽象類中添加新的方法,你可以給它提供默認(rèn)的實(shí)現(xiàn)。因此你不需要改變你現(xiàn)在的代碼。

如果你往接口中添加方法,那么你必須改變實(shí)現(xiàn)該接口的所有類。

 

什么時候使用抽象類和接口
  • 如果你擁有一些方法并且想讓它們中的一些有默認(rèn)實(shí)現(xiàn),那么使用抽象類吧。(默認(rèn)實(shí)現(xiàn))
  • 如果你想實(shí)現(xiàn)多重繼承,那么你必須使用接口。由于Java不支持多繼承,子類不能夠繼承多個類,但可以實(shí)現(xiàn)多個接口。因此你就可以使用接口來解決它。(多重繼承)
  • 如果基本功能在不斷改變,那么就需要使用抽象類。如果不斷改變基本功能并且使用接口,那么就需要改變所有實(shí)現(xiàn)了該接口的類。(基本功能不斷變化)

Java8中的默認(rèn)方法和靜態(tài)方法

Oracle已經(jīng)開始嘗試向接口中引入默認(rèn)方法和靜態(tài)方法,以此來減少抽象類和接口之間的差異,F(xiàn)在,我們可以為接口提供默認(rèn)實(shí)現(xiàn)的方法了并且不用強(qiáng)制子類來實(shí)現(xiàn)它。這類內(nèi)容我將在下篇博客進(jìn)行闡述。

參考博文:http://www.importnew.com/12399.html

多態(tài):

多態(tài),是指一個類實(shí)例的相同方法不同情形有不同表現(xiàn)形式多態(tài)機(jī)制使具有不同內(nèi)部結(jié)構(gòu)的對象可以共享相同的外部接口。這意味著,雖然針對不同對象的具體操作不同,但通過一個公共的類,它們(那些操作)可以通過相同的方式予以調(diào)用。

重寫(覆蓋)和重載:

重載(Overloading)

 方法重載是讓類以統(tǒng)一的方式處理不同類型數(shù)據(jù)的一種手段。多個同名函數(shù)同時存在,具有不同的參數(shù)個數(shù)/類型。

  重載Overloading一個類中多態(tài)性的一種表現(xiàn)。

  Java的方法重載,就是在類中可以創(chuàng)建多個方法,它們具有相同的名字,但具有不同的參數(shù)和不同的定義。

 調(diào)用方法時通過傳遞給它們的不同參數(shù)個數(shù)和參數(shù)類型來決定具體使用哪個方法, 這就是多態(tài)性。

 重載的時候,方法名要一樣,但是參數(shù)類型和個數(shù)不一樣,返回值類型可以相同也可以不相同。無法以返回型別作為重載函數(shù)的區(qū)分標(biāo)準(zhǔn)。

父類方法被默認(rèn)修飾時,只能在同一包中,被其子類被重寫,如果不在同一包則不能重寫。

父類的方法被protected修飾時,不僅在同一包中,被其子類被重寫,還可以不同包的子類重寫。

 

重寫方法的規(guī)則:

1)、參數(shù)列表必須完全與被重寫的方法相同,否則不能稱其為重寫而是重載。

2)、返回的類型必須一直與被重寫的方法的返回類型相同,否則不能稱其為重寫而是重載。

3)、訪問修飾符的限制一定要大于被重寫方法的訪問修飾符(public>protected>default>private

4)、重寫方法一定不能拋出新的檢查異;蛘弑缺恢貙懛椒ㄉ昝鞲訉挿旱臋z查型異常。例如:

父類的一個方法申明了一個檢查異常IOException,在重寫這個方法是就不能拋出Exception,只能拋出IOException的子類異常,可以拋出非檢查異常。

 

而重載的規(guī)則:

1)、必須具有不同的參數(shù)列表;

2)、可以有不同的返回類型,只要參數(shù)列表不同就可以了;

3)、可以有不同的訪問修飾符;

4)、可以拋出不同的異常;

重載和重寫(覆蓋)的特點(diǎn):

1. Override 特點(diǎn)

  1、覆蓋的方法的標(biāo)志必須要和被覆蓋的方法的標(biāo)志完全匹配,才能達(dá)到覆蓋的效果;

  2、覆蓋的方法的返回值必須和被覆蓋的方法的返回一致;

  3、覆蓋的方法所拋出的異常必須和被覆蓋方法的所拋出的異常一致,或者是其子類;

  4、被覆蓋的方法不能為private,否則在其子類中只是新定義了一個方法,并沒有對其進(jìn)行覆蓋。

2.Overload 特點(diǎn)

  1、在使用重載時只能通過不同的參數(shù)樣式。例如,不同的參數(shù)類型,不同的參數(shù)個數(shù),不同的參數(shù)順序(當(dāng)然,同一方法內(nèi)的幾個參數(shù)類型必須不一樣,例如可以是fun(int, float), 但是不能為fun(int, int));

  2、不能通過訪問權(quán)限、返回類型、拋出的異常進(jìn)行重載;

  3、方法的異常類型和數(shù)目不會對重載造成影響;

  4、對于繼承來說,如果某一方法在父類中是訪問權(quán)限是priavte,那么就不能在子類對其進(jìn)行重載,如果定義的話,也只是定義了一個新方法,而不會達(dá)到重載的效果。

總結(jié):

override(重寫)

   1、方法名、參數(shù)(參數(shù)個數(shù)和參數(shù)類型)、返回值完全相同。(自身特點(diǎn))

   2、子類方法不能縮小父類方法的訪問權(quán)限。(public > protected >private

   3、子類方法不能拋出比父類方法更寬泛的異常(父類IOException,子類Exception(不行)但子類方法可以不拋出異常)。

   4、存在于父類和子類之間。

   5、方法被定義為final不能被重寫。

 overload(重載)

  1、參數(shù)類型、個數(shù)、順序至少有一個不相同。(自身特點(diǎn))

  2、不能重載只有返回值不同的方法名。

  3、存在于父類和子類、同類中。

參考博文:https://blog.csdn.net/linzhaojie525/article/details/55213010

參考博文:https://blog.csdn.net/super_xiaoY/article/details/53484060

 

·上篇文章:Java中創(chuàng)建對象的5種方式
·下篇文章:Android網(wǎng)絡(luò)編程概述
復(fù)制 】 【 打印
 相關(guān)文章
沒有相關(guān)文章
特別聲明:本站除部分特別聲明禁止轉(zhuǎn)載的專稿外的其他文章可以自由轉(zhuǎn)載,但請務(wù)必注明出處和原始作者。文章版權(quán)歸文章原始作者所有。對于被本站轉(zhuǎn)載文章的個人和網(wǎng)站,我們表示深深的謝意。如果本站轉(zhuǎn)載的文章有版權(quán)問題請聯(lián)系我們,我們盡快予以更正,謝謝。
關(guān)于我們 | 業(yè)務(wù)范圍 | 免責(zé)聲明 | 聯(lián)系我們 | 友情連接
版權(quán)所有 Copyright © 2007 【卓安特保-您身邊的護(hù)衛(wèi)專家】山東卓安安防工程有限公司,電話13361029977 All Rights Reserved.
魯ICP備11024361號-5    頁面執(zhí)行時間:31.25MS
精品免费一区二区三 | 国产精品揄拍100视频 | 中文字幕卡通动漫亚洲图片欧美视频 | 国产精品无码the porn | **夜色精品国产欧美乱 | 久久一级毛片免费特黄毛片 | 日本无码熟人中文字幕 | 日韩av午夜福利 | 久久国产精品人妻aⅴ | 波多野结衣午夜影院 | 大屁股熟妇一区二区三区 | EEUSS鲁丝片AV在线观看戒色 | 久久双人人妻人人爽人人爽 | 波多野结衣一级婬片A片免费下载 | 午夜高清无码在线 | a级黄色一区导航 | 一级特黄女人18毛片免费视频 | 精品人妻伦一品二品三品免费视频 | 国产又粗又大的视频 | 蜜臀aⅴ国产精品久久久国产老师 | 91亚洲精品久久久蜜桃 借种 | 成人免费看一级A片奶水多 特级毛片AAAAAA蜜桃 | 强伦轩一区二区三区四区播放 | 国产精品久久久久久一级毛片中医 | 特级西西444WWW高清大视频 | 影音先锋日韩无码 | 粉嫩AV一区二区精品色欲 | 小黄书永久网站入口comwww | 婷婷视频亚洲一区 | 国产一精品一aⅴ免费 | 免费看黄在线观看 | 亚洲色图一区二区 | 国产又色又爽又高潮免费 | 69久一区二区三区A片 | 欧美激情在线播放 | 久久精品国产亚洲AV麻豆仙踪林 | 在线看AV的网站不卡的 | 国产乱妇无码毛片A片在线看下载 | 日本高清无码免费 | 中文字幕无码免费 | 高级婬片AAAAAAAA |