java面向對象的思想(java三大特性)


用通俗易懂的語言來理解java面向對象的思想

 

 

  大家都知道,java是面向對象的編程,掌握面向對象的編程思想是掌握java編程語言的核心,但是很多人在面向對象方面都存在或多或少的誤區,有的是剛學完C語言,受面向過程思想干擾,在剛剛接觸java的時候措手不及,感覺無從下手,我想通過自己對java的學習,用通俗易懂的語言,來談談自己對面向對象的理解,希望可以幫助大家來理解面向對象的編程思想。
理解面向對象的編程的思想,首先我想給大家一個非常熟悉的一個例子,讓大家對面向對象和面向過程有一個大致的理解,想必大家都知道那個“老張開車去東北”的例子用面向過程的思路理解:你首先得造一個車,然后包括掛檔,每一步都得自己一步一步的線性去完成;用面向對象的思路來理解的話,直接調個車,找個司機,然后告訴他去東北,然后其他的就不用你管了;你可能隱約的感覺到,面向對象的思路似乎省了不少事。
理解面向對象的思想,首先我們需要知道在理解面向對象時需要知道的幾個名詞對象,類,還有類中一些成員變量和成員方法,下面我們一一來進行分析:
對象:
對象是人們要進行研究的任何事物,從簡單的一個小分子到復雜的汽車飛機都可以看做對象,只是有時對象要根據人們研究問題的需要來確定,對象不一定是具體的,有時也可以表示抽象的規則或計划。
類:
類在java中是具有相同或相似性質的對象的抽象體現形式。也就是說,類的實例化就是創建對象的過程類的實例就是對象。
其實類的創建在一定程度上是符合人的思維的,我想借一個例子來說明這個問題,同時熟悉一下類的大致結構:
我們創建一個People類:

Java代碼 復制代碼 收藏代碼
  1. package com.guang.email;
  2. public class People {
  3. private String head;
  4. private String arms;
  5. private String legs;
  6. public People() {
  7. }
  8. public void hit(){
  9. System.out.println("hit you");
  10. }
  11. public void eat(){
  12. System.out.println("我要吃飯");
  13. }
  14. }
package com.guang.email;

public class People {
	private String head;
	private String arms;
	private String legs;
	
   public People() { 
	   
   }

	public void hit(){
		System.out.println("hit you");
	}
    public void eat(){
    	System.out.println("我要吃飯");
    }

}


首先我們看一下類結構,有成員變量,成員方法,還有構造方法,對於結構這里就不多講了,有很多同學不明白構造方法是干什么的,其實,構造方法是在實例化對象時執行的方法,一個類可以有很多構造方法,根據你創建對象時參數的不同來調用不同的構造方法,這就是所說的重載。
對於People類我們就叫他人類吧,你說人類是個什么,你可以摸的着嗎,其實他就是一個定義,一個抽象的東西,但是當我們在對他實例化時,你就可以知道他是一個具體存在的東西:例如:

Java代碼 復制代碼 收藏代碼
  1. People jim = new People();
  2. jim.hit();
  3. jim.eat();
People jim = new People();
    jim.hit();
    jim.eat();


我們實例化出了jim這個人的對象,是真實存在的,具體的,有頭,有胳膊,還有腿等,並且他還可以打人,吃飯。
其實面向對象並不難,很接近我們現實生活的,就是通過我們對自然界的認知,經過一點點的轉變,就轉換到編程語言上來了,也就是說,你用自然的思維去理解考慮問題就可以了,但是剛開始我們會不習慣,就像Thinking in java 里寫的那樣:“我們可能會被這種簡單性所難倒”你需要一段時間去習慣,開始的時候可以先模仿,寫的多了可能慢慢就會體會到面向對象的奧妙。
理解了上面對面向對象的一些基礎的東西以后,我們來看面向對象的三個特性:封裝、繼承、多態。看似簡單的六個字,卻是面向對象的核心,下面我們一起來看看這三個特性:
封裝:
面向對象最基礎的一個特性,封裝性,封裝是根據需要,把代碼和指令代碼捆在一起,就像一個保護器,防止外界代碼隨意的訪問,而是根據該保護器定義的接口來控制,封裝的好處是根據問題的需要,封裝代碼的好處是每個人都知道怎樣訪問代碼,進而無需考慮實現細節就能直接使用它,也不用擔心其他的一些副作用。
在JAVA中,最基本的封裝單元是類,一個類定義着將由一組對象所共享的行為(數據和代碼).一個類的每個對象均包含它所定義的結構與行為,這些對象就好象是一個模子鑄造出來的.所以對象也叫做類的實例。

  在定義一個類時,需要指定構成該類的代碼與數據.特別是,類所定義的對象叫做成員變量或實例變量.操作數據的代碼叫做成員方法.方法定義怎樣使用成員變量,這意味着類的行為和接口要由操作實例數據的方法來定義。

  由於類的用途是封裝復雜性,所以類的內部有隱藏實現復雜性的機制.所以JAVA中提供了私有和公有的訪問模式,類的公有接口代表外部的用戶應該知道或可以知道的每件東西.私有的方法數據只能通過該類的成員代碼來訪問.這就可以確保不會發生不希望的事情。

繼承
  繼承是指一個對象從另一個對象中獲得屬性的過程.是面向對象程序設計的三大原則之二,它支持按層次分類的概念.例如,黑種人是人的一種,美國人有時白種人的一種,.如果不使用層次的概念,每個對象需要明確定義各自的全部特征.通過層次分類方式,一個對象只需要在它的類中定義是它成為唯一的 各個屬性,然后從父類中繼承它的通用屬性.因此,正是由於繼承機制,才使得一個對象可以成為一個通用類的一個特定實例.一個深度繼承的子類將繼承它在類層次中的每個祖先的所有屬性。

  繼承與封裝可以互相作用.如果一個給定的類封裝了某些屬性,它的任何子類將會含有同樣得屬性,另加各個子類所有得屬性.這是面向對象程序在復雜性上呈線性而非幾何增長的一個重要概念.新的子類繼承其所有祖先的所有屬性.子類和系統中的其他代碼不會產生無法預料的交互作用。

多態
  多態是指一個方法只能有一個名稱,但可以有許多形態,也就是程序中可以定義多個同名的方法,用"一個接口,多個方法"來描述.可以通過方法的參數和類型引用。多態使得對象間交互更為靈活。

封裝,繼承,多態的組合使用 :

  在由封裝,繼承,多態所組成的環境中,程序員可以編寫出比面向過程模型更健壯,更具擴展性的程序.經過仔細設計的類層次結構是重用代碼的基礎.封裝能讓程序員不必修改公有接口的代碼即可實現程序的移植.多態能使程序員開發出簡潔,易懂,易修改的代碼.同樣,通過使用面向對象的設計原則,程序員可以把一個復雜程序的各個構件組合在一起,形成一個一致,健壯,可維護的程序

總的來說,所謂封裝,就是通過定義類並且給類的屬性和方法加上訪問控制來抽象事物的本質特性。所謂繼承,就是代碼重用,而多態,從另外一個角度分割了接口和實現。
理解了之后這些之后,想必你對面向對象會有一個新的認識,那么,接下來,可以找個小的程序題,或者生活中的某個應用,來自己設計並實現它吧。
編程來源於生活,又回歸與生活。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM