程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> java基礎之抽象類,java基礎

java基礎之抽象類,java基礎

編輯:JAVA綜合教程

java基礎之抽象類,java基礎


  java的繼承說完後..讓我們來了解了解抽象類...

  我們之前說過,將一件事物抽象成具體屬性和方法後,並將其封裝就是類了.如下圖

  我們將人的名字,性別,以及睡覺的方法扔進了類Person中,(專業術語:封裝成Person類)

  發現沒,雖然我是說將人的屬性,方法抽象封裝成類...但是,你沒發現我們抽象得過於具體了嗎?沒發現?

  我之前說的,將人的屬性,方法抽象後封裝進類裡面,但是......你難道不覺得name名字,sex性別太過於具體了嗎?還有就是.人的確有睡覺這個方法(行為),當是,,你直接就將其睡覺的方法定義成橫著睡...這是不是......

  所以我們可以這麼說,Person這個類使我們抽象出來的東西具現化了.我們本來只是將屬性抽象出來,但是現在我們卻將他們初始化了,比如名字改為了TianYiLuo 性別改成了男...

  所以說,我們應該將這個事物給高度概括一下...哦 我先提一下.在抽象類中.我們只負責方法(行為)的抽象,屬性那個東西我們不管..至於為什麼....太麻煩.沒必要

  來..讓我們將人的方法(行為)來個高度抽象吧....人有什麼方法呢..睡覺..吃飯好了 就暫時抽象這兩個了...先聲明..我不是只會吃飯睡覺蛤...我還會潛水...嘿嘿

  抽象類跟我們之前見到的正常的類沒什麼區別..只不過實在類和方法前面添加一個abstract而已...看下圖

    

  這就抽象完了....是不是很簡潔啊..抽象類跟普通類之前最主要的區別就是沒有方法體..方法體就是大括號裡面的內容,並且抽象類沒有辦法new對象...

   將事物高度概括成抽象類之後...不要以為就沒事兒了...事情還多呢....

  別跟我說...你將封裝成類之後就不管了...我之前不是說了的嘛..抽象類裡面裝的東西就是某類事物共有的方法...那啥來著...交集 ,所以我們要使用這個類的時候就要將其具體的方法描述出來...

  那麼該怎麼描述呢....當然是用繼承啦...看圖

  在這裡,我們是用student這個類將Person裡面的抽象方法給具體化.當然還可以用其他的類,只要是與Person(人)類有關的都可以,比如說worker(工人)teacher(教師)都可以,或許我舉的例子不是很形象..我就簡單的解釋一下....想象一下,每個人都有自己的不同的行為,方法...比如說同是睡覺..我可以橫著睡覺,側著睡覺,站著睡覺,躺著睡覺..看,每個方法的具體過程都不同..但是依然是睡覺..所以我們可以將其定義成抽象類.

  當然,這裡要提醒一下,抽象類的子類必須將父類的方法全部具體化(復寫)..否則,這個子類任然是抽象類..並且無法創建對象

  所以使用抽象類的時候一定要注意將所有的方法都復寫一次

 

  使用抽象類的好處:

  1.我們可以讓程序具有更好的拓展性...這個後面將java多態的時候我會講..

  2.讓程序的條理更加清晰,當我們使用抽象類後,無論子類是什麼,我們都可以通過抽象類來大致看出子類的功能,比如說Person是抽象類,那我們就可以知道,其子類就是不同的人,如果Door是抽象類,其子類自然就是不同的Door(門)啦..

 

  最後,我在來補充一個很容易被忽視的東西....關於權限修飾符的問題..我這裡講隨便說說,java中權限的大小順序是:

  public > protected > default > private

  如果父類的方法method1用public修飾,那麼子類在繼承並復寫該方法的時候只能用public修飾.否則報錯 我舉個例子

  在java中如果不加權限修飾符,則會使用默認的default權限,然後錯誤就發生了..使用低權限(default)覆蓋高權限(public)的錯誤

  一定要記住..高權限可以覆蓋低權限....但是低權限不能覆蓋高權限...我下面用圖說明

  ..吐槽一句...Windows自帶畫圖工具用不來.....

 

 

  

 

 

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved