Java物件導向編程(一)

來源:互聯網
上載者:User

標籤:print   tom   覆蓋   ++   ring   隱式   程式猿   over   java程式   

由於常常將Java和C++物件導向編程的原則搞亂,所以這次把相關要點分別總結一下,本文主要總結Java物件導向編程。

物件導向編程的三大特性是:繼承性(inheritance), 多態性(polymorphism)和封裝性(encapsulation)。

一. 繼承性

[類修飾詞列表] class 類名 [extends 父類名] [implements 借口列表名] { 類體 }

class Employee {public int workYear;public Employee() { workYear = 1; }}class Teacher extends Employee {public int classHour;public Teacher() { classHour = 10; }}

  1. 每一個類有且僅有一個直接父類,但能夠實現多個介面
  2. 當前定義的類的構造方法必須在其第一句調用其直接父類的構造方法。格式為:
    super(參數列表);
    假設程式猿沒有進行顯式調用,則JVM會自己主動隱式調用不帶不論什麼參數的父類構造方法,即:super()
  3. 子類和父類之間能夠進行類型轉換
    (1) 將子類型資料轉換為父類型資料能夠直接採用隱式類型轉換
    (2) 將父類型資料轉換為子類型資料須要採用強制類型轉換,且要保證執行時的正確性。
    // correctTeacher tom = new Teacher();Employee a = tom;Teacher b  = (Teacher) a;// runtime errorEmployee a = new Employee();Teacher b  = (Teacher) a;
  4. 能夠用instanceof 來推斷一個對象是不是某個類的執行個體對象。
    Teacher a = new Teacher();Employee b = new Employee();Employee c = a;System.out.println((b instanceof Teacher)); // falseSystem.out.println((c instanceof Employee)); // trueSystem.out.println((c instanceof Teacher)); // true
二. 多態性靜態多態性

靜態多態性是指在同一個類中同名方法在功能上的重載(overload)。

動態多態性動態多態性是指子類的成員方法對其父類同樣聲明的成員方法的覆蓋(override)。這裡的“同樣聲明”指的是除了方法修飾詞外全然同樣。利用動態多態效能夠通過父類型的引用調用子類型的方法。

class Employee {public int workYear;public Employee() { workYear = 1; }        public printInfo() {        System.out.println("This employee has worked for " + workYear + " years.");        }}class Teacher extends Employee {public int classHour;public Teacher() { classHour = 10; }        public printInfo() {System.out.println("This employee has worked for " + workYear + " years.");        System.out.println("This teacher has worked for " + classHour + " hours.");}}public class Main {public static void main(String[] args) {Employee a = new Teacher();a.printInfo();}}

  1. 在子類中定義與父類中同名的成員域不僅與多態性沒有關係。並且不提倡
  2. 能夠用superkeyword調用父類中被屏蔽的成員方法和成員域,即:super.xxx
  3. 動態多態性僅僅針對非靜態成員方法,即靜態成員方法不具有動態多態性:當在子類和父類的類體中定義了具有全然同樣聲明的靜態成員方法。且類型為父類的變數a指向子類的執行個體對象時,通過變數a調用該靜態成員方法將調用在父類類體中定義的靜態成員方法。
三. 封裝性這裡主要須要搞清楚類成員的訪問控制模式及相應的訪問範圍,例如以下表:
* 上述圖片來自《Java程式設計教程》 第2版。雍俊海編著
至此,Java中物件導向的三大特性討論完成,下一篇部落格將會討論抽象類別、介面和內部類等內容。

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.