面向對象的基本概念
這里先介紹面向對象程序設計的一些關鍵概念,並開始使用類,你需要學習一些術語,我們盡量用比較淺顯的語言來介紹,因為這些內容都比較重要,所以希望大家好好好理解。
一、什么是對象和面向對象的編程。
對象就是存在的具體實體,具有明確定義的狀態和行為,是面向對象編程的核心,用來描述現實世界中的實體,為計算機應用程序提供實體基礎,也是完成特定任務一個封裝。這樣描述對象卻是有點羅嗦。因為與傳統的C語言不通,C語言是過程語言,而java語言是面向對象的語言,所以對象是java語言的核心。
那到底什么是對象,能舉個例子嗎?其實在我們生活中,什么都可以抽象成為對象,比如你有一輛汽車,這輛車就是對象了,這個對象(汽車),它有顏色,牌子,有產地等等,這些我們也可以稱為是它的屬性,它也能開動,要維修等等這些操作,我們成為是它的行為。這就是對象了。
在面向對象編程中(簡稱:OOP),現實世界的所有事物全都被視為對象。OOP的目標是在計算機程序中,模擬現實世界中的概念,我們可以借助對象的描述就能夠在計算機程序中用類似的實體模擬現實世界中的實體。同時OOP也是設計和實現軟件系統的方法。
二、對象和類
類是具有相同屬性和行為的一組對象的集合。類是用於組合各個對象所共有操作和屬性的一種機制。
對象和類有什么關系呢!我們可以舉個例子來回答一下。比如現在有一個收銀員叫張小芳的。那么我們可以把他抽象成為一個對象——收銀員對象。
這個對象有以下的一些資料:
姓名:張小芳
職銜:收銀員
年齡:28
體重:60千克
操作:
收款
打印帳單
當然一個超市里面肯定不止一個收銀員,可能收銀員小明、小芳等等。這些都是收銀員對象,或者稱之為實例,而且所有的收銀員都有姓名、職銜、年齡、體重等屬性;收款和打印帳單等行為。我們通過對收銀員對象進行抽象,就可以得到一個收銀員類(class),這個類擁有姓名、職銜、年齡、體重等屬性;收款和打印帳單等行為。
所以我們得出:類是對象的原型,所有屬於同一個類的對象都具有相同的屬性和行為,我們抽象了類之后,我們又可以用類定義實體。類是概念模型,對象是真實的模型。
三、屬性和方法
類是java的基本單位,類一般包括屬性和方法。
屬性:事物的特性在類中表示為變量,每個對象的每個屬性都擁有其特有的值,屬性名稱由類的所有實例共享,在類中表示對象或實體擁有的特性時稱為屬性,比如我們上面所說的收銀員類就是有有姓名、職銜、年齡、體重等屬性,屬性一般使用名詞描述。
方法:操作的實際實現方法指定操作對象數據的方式如何執行所請求的操作的規范在得到操作請求時指定如何做的算法對象執行的操作稱為方法。比如我們上面所說的收銀員類就是有收款和打印帳單等方法,屬性一般使用動詞描述。
四、面向對象思想
因為面向對象思想簡單概括起來就是三個:封裝(Encapsulation)、繼承(Inheritance)和多態(Polymorphism)。
封裝:就是把某些內容封起來,不讓別人知道。有些對象自己的屬性內部實現細節是不想讓其他的對象知曉的,那么我們就可以把它封裝起來。這就是封裝的基本概念。
繼承:顧名思義,繼承就是兒子對父親的繼承,在類也可以有子類和父類的。子類對父類的繼承,但是繼承也不是全部繼承的,若子類與父類在同一包中。子類繼承了父類中所有不是private的成員方法(除構造方法)及不是private的成員變量繼承,有關繼承的具體我們在后面的會再介紹。繼承的目標主要實現重用代碼,節省開發時間。
多態:同一操作作用於不同的對象,可以有不同的解釋,產生不同的執行結果。在運行時,可以通過指向父類的指針,來調用實現子類中的方法。在java中多態一般又分為方法的重寫和方法的重載。
編譯時的多態性:編譯時的多態性是通過重載來實現的。對於非虛的成員來說,系統在編譯時,根據傳遞的參數、返回的類型等信息決定實現何種操作。
運行時的多態性:運行時的多態性就是指直到系統運行時,才根據實際情況決定實現何種操作。編譯時的多態性為我們提供了運行速度快的特點,而運行時的多態性則帶來了高度靈活和抽象的特點。
一下讓大家理解這些概念是不可能的,大家可以先簡單理解和記憶一下,以后再慢慢消化。
