面向對象的三大特點


面向對象的三大特點

(此圖來源於網絡)

1、封裝

           封裝是面向對象最重要的特征之一,封裝就是指隱藏。
           對象隱藏了數據(例如private屬性),避免了其他對象可以直接訪問使用對象屬性而造成耦合度過高,過度依賴。同時也可以阻止其他對象隨意修改對象內部的數據而引起對象的不一致,要訪問對象的數學,必須使用對象提供的相關函數。
           對象隱藏方法的實現細節。
           a)使用者只能使用公有方法而不能使用那些受保護的或者私有的方法,你可以修改這些非公有的方法而不影響使用者。
           b)可以隱藏具體類型,使用者不必關心對象的真正的類型就可以使用它們(依賴於接口或者抽象帶實現)。
           c)使用者無需關系那些與使用者無關的類,減少耦合。
           由於只能通過公用接口和方法是用他們,這樣,客戶程序就不能使用那些受保護的方法(如采用private 或protected關鍵字修飾的方法),而你可以隨意改變這些方法,並不會影響使用者,這樣降低了耦合度。

<pre name="code" class="java">
interface Display{	public void display();} class Person implements Display{	private int age; //屬性的隱藏	protected String name;		public Person(int age, String name){		this.age = age;		this.name = name;	}		public int getAge() {		return age;	}	public void setAge(int age) {		this.age = age;	}		public void display(){		System.out.println("age:"+age+",name:"+name);	}}
方法隱藏的典型例子是單例模式。

 
 

2、繼承

          繼承是面向對象的又一重要特征。繼承可以使用不同的類的對象具有相同的行為;為了使用其他類的方法,我們沒有必要重新編寫這些舊方法,只要這個類(子類)繼承包含的方法的類(父類)即可。
          從下往上看,繼承可以重用父類的功能;從上往下看,繼承可以擴展父類的功能。
<pre name="code" class="java">class Student extends Person{ //繼承
private int ID;
public Student(int age, String name, int ID) {
super(age, name);
this.ID = ID;
}
public void display(){
System.out.println("age:"+this.getAge()+",name:"+this.name + ",ID:"+this.ID);
}
}
 
 

3、多態
         多態可以使我們以相同的方式處理不同類型的對象。我們可以使用一段代碼處理不同類型的對象,只要他們繼承/實現了相同的類型。這樣,我們沒有必要為每一種類型的對象撰寫相同的邏輯,極大的提高了代碼的重用。
在上面的兩個類中,我們不需要知道具體對象的類型,通過接口我們可以調用display()函數,顯示相應對象的信息。
  
參考:《漫談設計模式 從面向對象開始》 劉濟華 清華大學出版社

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com