花了一早上的時間看完了《瘋狂Java講義》中有關面向物件的介紹。四年多的時間沒有接觸Java程式設計,很多概念都是碎片化散落在大腦之中,也是時候用文字總結的方式重新串聯起來。
一、何為面向物件:
面向物件程式設計是現在主流的程式設計思想。它不同於面向過程程式設計,面向物件的核心是把一切的事物的屬性和行為抽象組織成一個整體或事物。
這一個整體或事物稱之為類,類的例項化就是物件。人是一個整體,張三是人,是人類其中的一個例項化(也可稱之為物件)。
類通常由成員變數(屬性),方法(行為),構造器(建立物件的方法)。類的定義通常如下
package com.biao.Exeption;
public class Person {
//成員
private int age;
private int name;
//構造器
public Person(){
}
//方法
public void eat(){
System.out.println("到點乾飯");
}
}
類的通常由private、default、protected、public四種修飾符。
1. private:當前類訪問許可權,如果一個類的成員或方法由private修飾,則該成員或方法只能在內部才可以訪問使用。
2.default:包訪問許可權。如果一個類前面沒有任何修飾符,它就是預設使用包訪問修飾符。同一個包內所有的類都可以訪問同一包下面使用default修飾的成員或方法。
3.protected:子類成員訪問許可權。如果成員或方法是使用protected修飾符修飾,那麼它既可以被同一個包下的外部類訪問,也可以被其他包下面的子類訪問。
4.public:公共訪問許可權。使用public修飾符修飾的成員或方法可以被所有的外部類訪問。可以被理解為公共設施。
這四個修飾符的訪問許可權由小到大就是:private>>default>>protected>>public
二、面向物件的特徵是什麼
面向物件有三大特徵:
1. 封裝:封裝就是把一類事物的屬性(狀態)隱藏起來,也就是把所有的資料隱藏起來,只把對外的行為(方法)暴露出來。外界不需要知道該類事物實現的細節,只需要透過該類事物暴露出來的方法來訪問或者修改資料。這樣實現的好處,是可以更好地保護資料的安全性。舉個例子,我們去ATM取錢,ATM機就是一類事物,它給我們暴露了輸入密碼及取錢的方法。我們只需要使用它提供的輸入密碼及取錢的方法就可以取到現金,我們不需要關心它裡面是如何校驗密碼的正確性以及取錢過程的細節。
2. 繼承:繼承也可以理解為擴充套件。繼承是事物與事物之間的一種關係(也就是類與類之間的一種關係),是從屬於的一種關係。例如,水果是一種更寬廣的一種事物,蘋果是水果中的一種。水果中許多公共的屬性與特徵,蘋果也有。蘋果從水果中繼承了許多公共的屬性與行為,也可以根據蘋果自身獨特的特性對其進行擴充套件與修改。繼承的目的是為了減少程式碼的開發量,提高程式碼的複用率。Java的繼承只能是單繼承。
3.多型:多型的定義不好描述。個人的理解是同一個引用可以指向多種形態的事物。例如我們聲明瞭水果這種引用型別,但是程式執行時卻給他們賦值了蘋果或雪梨或葡萄等。水果可以指向蘋果,也可以指向雪梨,也可以指向葡萄。因此多型,我的理解是一種引用型別可以指向多種形態的例項物件。因此多型實現的基礎在於繼承,因為一種引用型別指向的例項物件,必須是這種引用型別下面的子類。正如不能把人指向水果。
以上是我今天早上看書的總結筆記,純屬個人理解,不保證理解的正確性。