日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

IEnumeratorTItem和IEnumerator Java 抽象类和普通类、接口的区别——看完你就顿悟了...

發布時間:2025/3/18 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IEnumeratorTItem和IEnumerator Java 抽象类和普通类、接口的区别——看完你就顿悟了... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

  • Java 抽象類和普通類、接口的區別——看完你就頓悟了

?

?

?

?

Java 抽象類和普通類、接口的區別——看完你就頓悟了
2017年10月25日 15:37:34 閱讀數:398

Java 抽象類和普通類、接口的區別——看完你就頓悟了

標簽:?java抽象類概念理解抽象類與接口區別抽象類與普通類區別 ?分類: Java(17)?

目錄(?)[+]

概念:

抽象性和具體性都是相對的,不是絕對的。簡單說,概念的內涵越小,則其抽象程度就越高,其外延也越大,反之亦然。比如“人”比“男人”抽象一點,而“生物”又比“人”更抽象一點,“物質”則比“生物”更抽象。 抽象的概念是由具體概念依其“共性”而產生的,把具體概念的諸多個性排出,集中描述其共性,就會產生一個抽象性的概念。抽象思維,是人類思維達到高級階段產生的一種能力,例如,當小孩子思維尚未成熟時,他們只能掌握具體概念,他們在學習代詞“你、我、他”時往往遇到困難,因為代詞具有較高的抽象性。 總之,抽象概念的外延大,內涵小,具體概念的外延小,內涵大。

一、抽象類與普通類的區別:

1、普通類可以去實例化調用;抽象類不能被實例化,因為它是存在于一種概念而不非具體。

?2、普通類和抽象類都可以被繼承,但是抽象類被繼承后子類必須重寫繼承的方法,除非自類也是抽象類。

看一個實例:

[java]?view plain?copy
  • public?class?Pet?{??
  • ??
  • public?void?play(){????????????????//這是寵物類,普通父類,方法里是空的??
  • }??
  • }??
  • --------------------------??
  • public?class?Cat?extends?Pet?{????//這是子類,是一個貓類,重寫了父類方法??
  • public?void?play(){??
  • ??System.out.println("貓爬樹");??
  • }??
  • }??
  • ------------------------??
  • public?class?Dog?extends?Pet?{????//這是子類,是一個狗類,重寫了父類方法??
  • ??public?void?play(){??
  • ??System.out.println("狗啃骨頭");??
  • ?}??
  • }??
  • -------------------------??
  • public?class?Test?{??
  • public?static?void?main(String[]?args)?{??//這是測試類,分別調用了子類的不同方法??
  • ??
  • Pet?p1=new?Dog();???????????????????????????????//多典型的多態表現啊,相當的給力??
  • Pet?p2=new?Cat();??
  • ??
  • p1.play();??
  • p2.play();??
  • }??
  • }??
  • -----------------------
    輸出結果:
    狗啃骨頭
    貓爬樹
    -----------------------
    問題:把父類改成抽象類,方法改成抽象方法,那么
    public?void?play();//抽象方法沒方法體
    子類不變,依然重寫父類方法,那這個跟普通父類沒區別啊?
    難道說就一個抽象方法沒方法體就完事了??那我普通方法有方法體,我空著不寫內容不就得了,不跟抽象方法一個樣嗎??
    別跟我說抽象類還不能實例化,哥也不需要去new它!
    普通類都能搞定的,還弄個抽象類有什么意義?我前面都說了普通類的方法我可以空著不寫,達到跟抽象類方法沒方法體一樣的效果。
    既然兩種方式都能達到同一個輸出效果,弄一種方式不就得了,那為什么還要創造出一個抽象類出來?難道是比普通類看著舒服?用著爽?還是更加便捷?還是為了強制讓別人用的時候必須強制化實現抽象方法省的你忘了什么的?

    ?

    答:就是為了強制不能實例化,以及強制子類必須實現方法這不是你忘不忘的問題
    你說你不去new它就行了,這話沒錯
    那你想另一個問題,為什么要有訪問控制呢?為什么要有private和public之分呢?
    我可以全部public,不該訪問的,我不訪問就行了啊
    小程序里,看不出什么區別,反而private成員要寫一堆set和get函數,多麻煩,我自己寫小程序的時候也會偷懶全部public
    但是項目大了,代碼多了,這種嚴謹的結構就很重要了
    且不說會有很多人合作一起寫一個程序,哪怕還是你一個人寫,也保不住有忘記的時候,那時候編譯器不報錯,茫茫碼海上哪找錯誤去
    面向對象說到底就是方便你思考,模塊化,易維護管理,硬要說沒必要,整個面向對象都沒必要了,C語言有什么干不了的呀,運行效率還高。

    二、抽象類與接口的區別:

    1、概念不一樣。接口是對動作的抽象,抽象類是對本質的抽象。
    抽象類表示的是,這個對象是什么。接口表示的是,這個對象能做什么。比如,男人,女人,這兩個類(如果是類的話……),他們的抽象類是人。說明,他們都是人。人可以吃東西,狗也可以吃東西,你可以把“吃東西”定義成一個接口,然后讓這些類去實現它。
    所以,在高級語言上,一個類只能繼承一個類(抽象類)(正如人不可能同時是生物和非生物),但是可以實現多個接口(吃飯接口、走路接口)。

    2、使用不一樣:

    ?a.抽象類 和 接口 都是用來抽象具體對象的. 但是接口的抽象級別最高
    b.抽象類可以有具體的方法 和屬性, ?接口只能有抽象方法和不可變常量
    c.抽象類主要用來抽象類別,接口主要用來抽象功能.
    d.抽象類中,且不包含任何實現,派生類必須覆蓋它們。接口中所有方法都必須是未實現的。

    ?e.接口是設計的結果 ,抽象類是重構的結果

    3、使用方向:當你關注一個事物的本質的時候,用抽象類;當你關注一個操作的時候,用接口。
    注意:抽象類的功能要遠超過接口,但是,定義抽象類的代價高。因為高級語言來說(從實際設計上來說也是)每個類只能繼承一個類。在這個類中,你必須繼承或編寫出其所有子類的所有共性。雖然接口在功能上會弱化許多,但是它只是針對一個動作的描述。而且你可以在一個類中同時實現多個接口。在設計階段會降低難度的。

    總結

    以上是生活随笔為你收集整理的IEnumeratorTItem和IEnumerator Java 抽象类和普通类、接口的区别——看完你就顿悟了...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。