国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

抽象類和接口

2019-11-14 15:35:18
字體:
來源:轉載
供稿:網友

抽象類和接口是java語言中對于抽象定義的兩種機制,正是由于這兩種機制的存在,才賦予了java強大的面向對象能力。

抽象類和接口之間在對于抽象類定義的支持方面具有很大的相似性,甚至可以相互替換,因此很多初學者對使用哪個總是混淆。

所以本文將

  ①分別介紹抽象類和接口

  ②對兩者的區別進行剖析

一:抽象類

  ①概念:

  抽象類和一般類沒有太大的區別,都是在描述事物,只不過抽象類在描述事物時,有些功能不具體。所以抽象類和一般類在定義上,都是需要定義屬性和行為的。只不過,比一般類多了一個抽象函數。而且比一般類少了一個創建對象的部分。

  ②特點:

  1.抽象方法只能定義在抽象類中,抽象類和抽象方法必須被abstract修飾,但抽象類中可以不定義抽象方法。

  2.抽象類不可以被實例化

  3.只有通過子類繼承抽象類并覆蓋了抽象類中的所有抽象方法后,該子類才可以實例化。否則,該子類還是一個抽象類。

  4.抽象類中有構造方法,是用于給子類對象初始化的。

  5.抽象類關鍵字abstract不可以和final,PRivate,static共存。

  ③什么時候用:

  在描述一個行為的時候,這個行為有N種動作,這時候就要用到抽象類了。

二:接口

  ①概念:

  抽象類是描述一個事物本質的內容的,而接口則是對一個事物的擴展。

  Java接口是一系列方法的聲明,是一些方法特征的集合,一個接口只有方法的特征沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能)。

  ②特點:

  1.是用關鍵字interface定義的

  2.接口中的成員都有固定的修飾符

    成員變量:public static final

    成員函數:public abstract

    eg:     

interface Inter{    public static final int x = 3;    public abstract void show();}

  3.接口中的方法都是抽象方法,而且接口不可以被實例化,接口的子類必須實現了接口中所有的抽象方法后,該子類才可以實例化。否則,該子類還是一個抽象類。

  4.一個類在繼承另一個類的同時,還可以實現多個接口,這就是多繼承改良后的結果。 

三:抽象類和接口

  ①語法層面的區別:

    共性:都是不斷向上抽取的結果

    區別:

      1:抽象類只能被繼承,而且只能單繼承。  

      接口需要被實現,而且可以多實現。

      2:抽象類中可以定義非抽象方法,子類可以直接繼承使用。

      接口中都是抽象方法,需要子類去實現。

      3:抽象類使用的是 is a 關系。

      接口使用的 like a 關系。

      4:抽象類的成員修飾符可以自定義。

      接口中的成員修飾符是固定的。全都是public的。

      5.抽象類可以有構造方法。

      接口中不能有構造方法。

  ②設計層面的區別:

      對于這個問題你可以去美國問一下Java之父——詹姆斯·高斯林,相信會得到十分具有權威性,最專業的回答。

   什么? 太遠了?      呃。。。。好吧,那么鄙人不才,談談自己的理解。希望你可以從中得到一些東西。嘻嘻

   接口這個東西呢,更多的是用于系統設計上,可以理解為電腦主板上的接口,最初的主板上面什么接口都沒有,每一次配置升級的時候,都是重新再做一塊主板,麻煩死了,所以人們就聚到一起喝喝茶,想一個好的辦法解決這個問題,還真給想出來了,每一次一個硬件升級都需要重新做一個主板,那么你自己升級就去升啊,別煩我啊,這樣吧,咱們兩個定個規則,我是做主板的,我在主板上留個特定的接口,你是做CPU的,你CPU也做這么一個接口,你做好之后直接往上面一插不就完了。哎呀,大家都很高興,看來還是喝茶好啊。

  從上面可以看出接口設計的特性:1.規則2.擴展3.降低耦合

  好了,說完了接口設計的特性,來繼續回到我們的話題,抽象類和接口設計層面的區別。

  抽象類呢,是對類進行抽象,是描述事物的本質。而接口呢,是事物功能,行為的抽象。一般我們寫抽象類,都是先知道子類,然后根據子類抽象出父類,它是自下到上的。而接口就不一樣了,什么子類,我根本不需要知道,我只需要定義一個規則,你愛實現實現,不實現算了。這個是自頂到下設計的。

  好了。我知道的就這么多了,也沒舉列子,寫代碼,相信大家不會怪我的,哈哈

  有什么需要解決的問題,可以在下面評論,大家一塊解決啊、

      

 

 

    

 

 

  

  

  

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 奇台县| 大宁县| 舟山市| 吉隆县| 尼勒克县| 新田县| 金溪县| 韶关市| 清丰县| 南召县| 徐汇区| 邮箱| 永胜县| 延安市| 长海县| 纳雍县| 电白县| 七台河市| 瑞金市| 定陶县| 延川县| 乌拉特前旗| 濮阳县| 玉林市| 东莞市| 固始县| 屏山县| 潼南县| 竹北市| 阜新| 日照市| 武强县| 峨边| 万年县| 承德市| 禄劝| 从江县| 新沂市| 临猗县| 阿巴嘎旗| 清流县|