java第三天---類和物件
一、概述
java的核心思想:面向物件的程式設計
程式設計有兩種思想,面向過程和麵向物件,現在開發幾乎全是面向物件,這不是說面向物件開發比面向過程更簡單,其實面向物件開發的更復雜,那為什麼還要用面向物件呢?
首先明白何為面向過程,何為面向物件。面向過程就是一切為實現功能為目標,實現完了就結束了,基本不考慮後期的維護難度。面向物件,更多的是考慮子模組的設計,每個功能模組都單獨存在,要考慮重用性和可維護性,一切以結果為目標,忽略開發過程。
再簡單的說:你在餐館點餐,要份辣子雞,你就是面向物件,只說目的。廚師做出辣子雞就是面向過程。
在開發程式時,並不是說用面向物件後,就不用面向過程,這兩個是同時存在的。當你將一個功能獨立出來設計,隨處呼叫的模組時,就是面向物件。當你在實現這個獨立出來的功能時,就是面向過程的。
在面向物件設計開發時,就要去封裝一個一個的功能模組,然後在每個需要的地方去呼叫,或者子類的繼承,多型。所以我們學習面向過程就是學習如何去“抽象"出類,然後進行封裝,然後使用。概括就是:封裝、繼承、多型,或者再加上一個抽象
我認為面向物件就像現在工業的模組化生產,像汽車,由各個零件的模型做出很多零件,再把一套成型的零件來組裝一輛汽車。如果需要更改車型,只要改模型,就能生產出很多一樣的零件。
具體解釋:
封裝:保護功能模組的功能不被破壞
繼承:擴充套件原有的功能
多型:一個類的功能可以呈現多種不同的結果,一個印表機,既能列印黑白,也能列印彩色。
面向物件的開發過程:
面向物件分析(OOA)、面向物件設計(OOD)、面向物件程式設計(OOP)
二、類和物件
類和物件是整個面向物件的基本組成單元。
封裝出來就是一個一個類,類是對現實世界上存在的東西的抽象形容。類裡邊有屬性,有功能方法。
物件是對類的具體描述,描述出來一個獨立的個體,每個物件都有自己的屬性和行為(功能方法)。
類不能直接使用,物件可以直接使用。
例如:人是一個物種,是一個類。有名字,年齡,身高,性別等屬性。也有吃飯,走路,睡覺這些行為。但是這不是一個具體的,只是一類描述,當我們要使用類的某個功能是,就要例項化一個物件,這個物件是實實在在的能幹事的。比如老師對班裡的學生說,唱一個歌,但是大家不知道具體誰唱,這時老師說,小明來唱首歌,這就具體到了一個實實在在的物件。
類的格式:
public class Person { String name; int age; int height; String sex; //這裡全都是成員變數 public Person(){}; //構造方法 public void eat(){ //成員方法,也是具體實現各種功能的地方 System.out.println("eat"); } }View Code
物件的建立:物件是用來儲存一個具體描述事物的一串相關聯的資料。
public static void main(String[] args) { // 使用new關鍵字建立物件 // 物件型別 物件名=new 類名(); Person person = new Person(); // 給物件屬性賦值 person.name="小明"; person.age=18; person.height=180; person.sex="男"; // 呼叫成員方法 person.eat(); // 來呼叫各個屬性的值 System.out.println("姓名:"+person.name); System.out.println("年齡:"+person.age); }
三、方法/函式的定義和使用
在程式設計中,常將一個功能模組寫成函式,可以重複呼叫。
函式分為全域性函式、全域性靜態函式;在類中還可以定義建構函式、解構函式、拷貝建構函式、成員函式、友元函式、運算子過載函式、行內函數等
定義:
許可權修飾符 [static] 返回值型別 方法名(引數列表){
程式碼塊;
[ 返回值;]
}
例項:
public class CeShi(){ // 無參無返回值 void來修飾無返回值的方法 public void sum1(){ int a=2; int b=3; System.out.println(a+b); } // 無參有返回值 返回值型別修飾符的範圍要大於等於return出來值得類型範圍 public int sum2(){ int a=2; int b=4; return a+b; } // 有參無返回值 public void sum3(int a,int b){ System.out.println(a+b); } // 有參有返回值 public int sum4(int a, int b){ return a+b; } } //對方法進行呼叫 public class CeTest{ public static void main(String[] args) { CeShi ce = new CeShi(); // 無參無返回值 ce.sum1(); // 無參有返回值 int i = ce.sum2(); //有返回值的方法呼叫後可以用一個變數接收 System.out.println(i); // 有參無返回值 ce.sum3(1,3); // 有參有返回值 int i1 = ce.sum4(3, 8); System.out.println(i1); } }View Code
使用:
方法的呼叫:物件名.方法名
屬性的呼叫:物件名.屬性名