2017年4月30日 星期日

Java : 物件導向三大特性(封裝、繼承、多型)

Java是種物件導向為基礎的程式語言,物件導向有3大特性:封裝、繼承、多型,但是在介紹3大特性以前,必須先談談何謂類別和物件。


類別:
類別可以把它想像成為一張藍圖,藍圖是為了做出我們想要的物件而設計的,裡面會定義好我們所需要的屬性和方法,其中方法又大概可以分為一般的方法、類別方法和建構子。

物件:
物件則是具體的東西,是藉由定義好的類別(藍圖)來建立的。

封裝
物件導向概念中,「封裝」可說是物件狀態的隱藏過程,或指程式實作的隱藏
(implementation hiding)。所謂的封裝是透過統一方法或介面實作來取得那些類別
中不允許被外部直接存取的內部資料,以維謢物件資源的完整性與存取安全。
簡單地說:就是將類別(class)內部的屬性(data)和方法(method)包裝起來。


public class Encapsulation {

 public static void main(String[] args) {
 
  MyAccount account = new MyAccount();
   
  account.setMoney(1000);
   
  System.out.println(“$” + account.getMoney());
  
 }

}

class MyAccount {

 private int money;

 public void setMoney(int money) {
 
  this.money = money;
 
 }

 public int getMoney(){
 
  return money;
 
 }

}
//執行結果: $1000

繼承
繼承是指類別物件的資源可以延伸和重複使用,在程式中可利用 extends 關鍵
字來表達類別的繼承關係,這種延伸類別(extends class ) 的關係也就是 “is a “的
概念。


class Father {

public int money = 1000000;

public void undertaking() {

System.out.println(“父親的事業”);

}

}

class Son extends Father {

}

Public class Extends {

public static void main(String[] args) {

Son son = new Son();

son.undertaking();

System.out.println(“金額:” + son.money);

}

}
/*
執行結果:

父親的事業

金額:1000000
*/

多形
簡單來說就是同名的方法。多個相同名稱的方法,傳入不同的參數,會執行不同的敘述。
要實現java再多型方面的功能,可以使用2種技巧多載(overloading)覆寫(overriding)

關於多型的介紹會在寫下一篇文章。
如果我的觀念有錯的話錯誤歡迎指教!~

1 則留言:

  1. 多型的部分可能講錯了,多型應該是指類別衍生彼此的關係,有時可以替換抽用或覆蓋

    回覆刪除