Java物件導向(下)

來源:互聯網
上載者:User

標籤:instance   基本   中繼   對象   抽象類別   ima   tostring   運行時   參數   

Java 中的instanceof 運算子是用來在運行時指出對象是否是特定類的一個執行個體。instanceof通過返回

一個布爾值來指出,這個對象是否是這個特定類或者是它的子類的一個執行個體。

類的三大特性:封裝、繼承、多態;
封裝:把複雜的邏輯隱藏起來,對外只顯示一個介面。
繼承:子類繼承父類公開的屬性和方法,這樣可以減少代碼量。
多態:一種事物的多種形態。

一.類的繼承
  1.繼承的概念
    繼承用於描述事物之間的所屬關係,通過整合可以使所有事物之間形成一種關係體系。
    通過extends來實現繼承,其中只允許單繼承,也就是說一個類只能有一個父類,可以好多各類共同擁有一個父類,也允許多重繼承。
   2.重寫父類方法
    (1)重寫與重載
      重寫:在子類當中重新定義在父類當中已經存在的方法,且重寫後方法的許可權不能低於父類當中的許可權
      重載:在一個類中,有些許方法名相同的方法,但他們參數的個數或者類型不一樣重寫是兩個類,重載一個類
   (2)注意
      父類當中的private修飾的方法和屬性不會被子類繼承到
  3.super關鍵字
   (1)概念
      當子類重寫了父類方法時,子類無法訪問父類中的方法,於是乎就有了super
   (2)作用
      用super調用父類的屬性和方法
      用super調用父類的構造方法,相當於this。(super和this要寫在構造方法第一行,必須是第一行)

二.final關鍵字
final修飾的類不能被繼承,修飾的方法不能被重寫,修飾的變數為常量不能被更改

 三.多態

  1.理解
    同一個行為具有多個不同表現形式或形態的能力就是多態,人兩條圖走路,貓四條腿走路,蜈蚣n條腿走路這就是多態,多態體現在方法的重寫和重載,重載式多態,也叫編譯時間多態,重寫式多態,也叫運行時多態狗的叫聲是:汪汪汪,而貓的叫聲是:喵喵喵。這就體現了不同動物shout方法的多態
  2.物件類型轉換
    **抽象類別和介面可以當做向上轉型的引用變數類型
    (1)向上轉型
       1*概念
          通過類型轉換把子物件轉為父類型
          如 Animal dog=new Dog();
      2*注意

          轉型後只能調用子類父類共同具備的屬性和方法,且屬性和方法的值還是子類的。
          如有一隻狗叫大黃(DaHuang)他學會了一個本領fly(),並且他還會用兩條腿跑把它進行向上轉型 Dog daHuang=new daHuang();現他不能fly因為父類dog中沒有fly方法,但他依舊叫大黃,並且可以兩條腿走,這些屬性dog類都具備所以都保留了下來。
       3*Object類
        Object是所有類的父類,他有一個toString()方法,所有對象可直接調用,他用與輸出
        對象的基本資料,如對象所屬類的類名、和對象的地址資訊,也可以對toString()
        方法重寫,用於放回一些特有資訊
      4*意義
        減少代碼重複
*******************************有例子***********************************************

  (2)向下轉型
      通過類型轉換把父物件轉為子類型
    1*注意事項
      向下轉型的前提是父類對象指向的是子類對象(也就是說,在向下轉型之前,它得先向上轉型)
      向下轉型只能轉型為本類對象(貓是不能變成狗的)
     2*意義
      向上轉型類似於一種模糊化處理,向下轉型則是對模糊化的去除,找迴向上轉型丟失的方法

四.介面
  1.抽象類別

  (1)定義
      定義一個類時通常需要定義一些方法來描述該累的行為特徵,有些時候,這些方法的方式是無法確定的So就誕生了用abstract修飾的抽象類別
  (2)特點
      允許在定義方法時不寫方法體,不包含方法體的方法為抽象方法,抽象類別中可以有普通的方法也可以同時都包含,也可以不包含抽象方法,抽象類別不能建立對象。

  2.介面
  (1)定義
      如果一個抽象類別中所有方法都是抽象的我們可以用關鍵字interface修飾(而不是class)使其變為一個介面

  (2)特點
      1*方法全部為抽象方法,所有方法預設用public abstract來修飾,成員變數全部預設用public static final修飾一般不在介面中定義變數
      2*由於介面中全部為抽象方法所有介面不能建立執行個體化對象,需要重新定義一個類並用implements關鍵字來實現介面中的所有方法。
      3*介面可以通過extends去繼承另一個介面
      4*若一個抽象類別實現某個介面只要實現介面中的部分方法就行,普通類需全部實現
      5*一個類可以implements多個介面,但只能extends一個類
      6*一個類可同時實現繼承和實現介面但extends必須在implements前面
  (3)抽象類別和介面的理解
      1*介面是對行為的抽象
      2*抽象類別生來就是被繼承的
      3*java中類是現實生活中具體事物的映射,所以抽象類別是對一種事物的抽象,包括屬性和方法,即對類抽象而介面卻是對類局部進行的抽象即對行為的抽象,在java中繼承是一個 "是不是"的關係,而 介面 的實現則是 "有沒有"的關係。如果一個類繼承了某個抽象類別,則子類必定是抽象類別的種類,而介面實現則是有沒有、具備不具備的關係
      4*抽象類別作為很多子類的父類,可以把它認為是一種模板。而介面可以認為是一種行為規範
      5*對於抽象類別,如果需要添加新的方法,可以直接在抽象類別中添加具體的實現,子類可以不進行變更;而對於介面則不行,如果介面進行了變更,則所有實現這個介面的類都必須進行相應的改動。

  3.匿名內部類

未完待續

 

五.異常

 

 

 


六.包的定義與使用

Java物件導向(下)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.