面向對象編程(Object Oriented Programming, OOP, 面象程序設計)是一種計算機編程架構,OOP的一條基本原則是計算機程序是由單個能夠起到子程序作用的單元或對象組合而成,OOP達到了軟件工程的三個目標:重用性、靈活性和擴展性。它主要包括三個特性:繼承封裝多態。
一.類和對象
類是具有相同屬性和服務的一組對象的集合。它爲屬於該類的所有對象提供了統一的抽象描述,其內部包括屬性和方法兩個主要部分。對象是系統中用來描述客觀事物的一個實體,它是構成系統的一個基本單位。類和對象的關係:類是對象的抽象,對象是類的實例。
類 public class Test{
···
}
對象 Test test=new Test();
二.特殊引用“this”的使用
訪問對象中的成員,是通過”對象->成員”的方式訪問的,這是在對象的外部去訪問對象中成員的形式,那麼如果我想在對象的內部,讓對象裏的方法訪問本對象的屬性,或是對象中的方法去調用本對象的其它方法這時我們怎麼辦?因爲對象裏面的所有的成員都要用對象來調用,包括對象的內部成員之間的調用,本對象的引用this,每個對象裏面都有一個對象的引用this來代表這個對象,完成對象內部成員的調用, this的本意就是“這個”的意思。
三.構造方法
大多數類都有一種稱爲構造函數的特殊方法。當創建一個對象時,它將自動調用構造函數,也就是使用new這個關鍵字來實例化對象的時候自動調用構造方法。構造函數的名稱必須與類名相同。
public class Test{
public Test(){
````
}
}
四.封裝性
封裝性是面象對象編程中的三大特性之一,封裝性就是把對象的屬性和服務結合成一個獨立的相同單位,並儘可能隱蔽對象的內部細節,包含兩個含義:1.把對象的全部屬性和全部服務結合在一起,形成一個不可分割的獨立單位(即對象)。2.信息隱蔽,即儘可能隱蔽對象的內部細節,對外形成一個邊界〔或者說形成一道屏障〕,只保留有限的對外接口使之與外部發生聯繫。
使用private這個關鍵字來對屬性和方法進行封裝:通過private就可以把人的成員(成員屬性和成員方法)封裝上了。封裝上的成員就不能被類外面直接訪問了,只有對象內部自己可以訪問。
public class Test{
private String name;
private String sex;
private void method(){
````````
}
}
五.類的繼承
繼承性是子類自動共享父類數據結構和方法的機制,這是類之間的一種關係。在定義和實現一個類的時候,可以在一個已經存在的類的基礎之上來進行,把這個已經存在的類所定義的內容作爲自己的內容,並加入若干新的內容。 在軟件開發中,類的繼承性使所建立的軟件具有開放性、可擴充性,這是信息組織與分類的行之有效的方法,它簡化了對象、類的創建工作量,增加了代碼的可重性。採用繼承性,提供了類的規範的等級結構。通過類的繼承關係,使公共的特性能夠共享,提高了軟件的重用性。
我們用extends讓子類去繼承父類的特性。
public class Person{
```````
}
public class Student extends Person{
`````````
}
六.方法重載
方法重載就是定義相同的方法名,通過“參數的個數“不同或“參數的類型“不同,來訪問我們的相同方法名的不同方法。其實我們所說的方法重載是子類方法覆蓋父類已有的方法,我們可以在子類中定義和父類同名的方法,這樣就把從父類繼承過來的方法覆蓋掉了。
七.Static關鍵字的使用
static關鍵字是在類中描述成員屬性和成員方法是靜態的;static成員能夠限制外部的訪問,因爲static的成員是屬於類的,是不屬於任何對象實例,是在類第一次被加載的時候分配的空間,其他類是無法訪問的,只對類的實例共享,能一定程度對類該成員形成保護。因爲靜態成員在第一訪問時就分配了內存空間,所以再類外部不需要對象二直接使用類名就可以訪問靜態成員,類裏面的靜態方法只能訪問類的靜態成員。
八.抽象方法和抽象類
我們在類裏面定義沒有方法體的方法就是抽象方法,具體是指在方法定義中加上abstract修飾方法,並且在方法聲明的時候沒有大括號以及其中的內容,而是直接在方法名後加上分號。
例如:public abstract method();
有抽象方法存在的類就是抽象類,要明確的是抽象類中可以有不是抽象的方法和屬性,但一個類中只要有抽象方法存在,他就是抽象類!
例如:
public abstract class Test{
String name;
String age;
public abstract getname();
public abstract setname();
}
注意:抽象類不能產生實例對象!!!
九.接口
接口相當於一種抽象類,充當父類的角色,一個子類只能有一個父類,但可以有多個接口,接口裏面所有的方法必須都是聲明爲抽象方法,另外接口裏面不能聲明變量,而且接口裏面所有的成員都是public權限的。所以子類在實現的時候也一定要使用public權限實現。
實例 public interface Test1{
public String name;
public void method 1();
public void method2 ();
}
接口間的繼承:我們可以用extends讓一個接口去繼承另一個接口。
實例 public interface Test2extends Test1{
public void method3();
}
我們用implements關鍵字讓子類去實現接口中全部的抽象方法
實例 class Test3 implements Test1{
publicvoid method 1() {
….
}
publicvoid method2 () {
….
}
}
十.多態
多態是除封裝和繼承之外的另一個面象對象的三大特性之一,也是面向對象程序設計的核心部分。所謂多態性是指一段程序能夠處理多種類型對象的能力,體現在繼承關係上就是父類引用指向子類對象,這也是多態最核心的表述。體現在接口上主要有接口作爲變量和接口作爲返回值類類型。