面向對象:
是相對與面向過程而言的一種編程思想。
面向過程:強調完成功能的過程。
面向對象:關注完成功能的結果。只管哪個對象完成這個功能
將功能封裝進對象,強調具備了功能的對象
面向對象是基於面向過程。
思想特點:
是一種符合人們思考習慣的思想
可以將複雜的事情簡單化
將程序員從執行者轉換成了指揮者
以後在完成任何需求的時候,先找有沒有具備這種功能的對象,如果有就用,如果沒有就自己寫出來,將來還可以方便別人使用。
舉例說明:
A:買電腦。
面向過程:瞭解---->抵達------->找牌子--->查配置單--->付款
面向對象:找懂的人,把錢給他,最後拿電腦
面試舉例:
寫程序。
如何更好的讓我們的程序是面向對象的呢?
分析存在那些類(或者對象)推薦:(UML統一建模語言)名詞提取法。
分析每個類可以做什麼。
分析類與類之間的關係。
類與對象:
我們學習的編程語言,都是爲了把現實世界的事物給描述出來。通過編程語言來模擬現實世界的操作。
現實世界的事物:
外在特徵:外在的屬性描述
內在的行爲:具備的功能
Java語言裏的最基本單位是:類。
編程語言裏的類:
成員變量(字段,屬性):定義在類裏邊,方法外。
成員方法(函數):不用static修飾的函數
類:是具有相同屬性和行爲的一類事物的抽象
對象:是該類事物的具體表現形式。具體存在的個體。實例。
怎樣才能符合面向對象的思想呢?
分析有哪些類存在
每個類都有哪些成員
類與類的關係
創建類:
首先把該事物用特徵和行爲體現出來,把該事物轉換爲java中的類,最後創建對象調用
使用類:
要想使用學生類的成員變量和方法,
步驟
創建對象: 類名 變量名 = new 類名();
使用成員變量和方法: 對象名.變量 對象名.方法名();
注意:在一個java文件裏可以定義多個類、這個時候的類名必須和帶main方法的類名一致
成員變量和局部變量的區別:
在類中的位置區別:
局部變量:方法中
成員變量:類中,方法外
在內存中的區別:
局部變量:在棧中
成員變量:在堆中:
生命週期的區別:
局部變量:隨之方法的調用而存在,隨之方法的調用完畢而消失
成員變量:隨之對象的創建而存在,隨之對象的消失而消失
初始化值的區別:
局部變量:沒有初始化值,使用前必須先聲明,再賦值,最後在使用
成員變量:都有默認初始化值。
匿名對象:沒有名字的對象
用法:
只調用一次方法。匿名對象使用完畢後就是垃圾了。
匿名對象可以作爲實際參數進行傳遞。
成員變量不給值和給值的區別:先走默認初始化然後顯示初始化
一般推薦不給顯示值,因爲只有在類的實例化時才明確成員變量
類是多個相關的屬性和行爲的抽象。
只有變量是類的外在特徵的時候,纔可以定義爲成員變量。
如果多個範圍都適合定義變量,建議永遠在小範圍,生命週期短,效率高。
案例:‘
/*
注意:類是相關的屬性和行爲的抽象。
只有變量是類的外在特徵的時候,纔可以定義爲成員變量。
如果多個範圍都適合定義變量,該怎麼辦?
建議永遠在小範圍。
寫一個長方形類,裏面有求周長和麪積的功能。
然後在測試類中進行測試。
在一個java文件中,import一定優先於class存在。
*/
import java.util.Scanner;
class RectTest {
public static void main(String[] args) {
Rect r = new Rect();
//給長和寬賦值
//r.length = 10;
//r.width = 5;
Scanner sc = new Scanner(System.in);
System.out.println("請輸入長方形的長:");
r.length = sc.nextInt();
System.out.println("請輸入長方形的寬:");
r.width = sc.nextInt();
int zhouChang = r.getZhouChang();
int area = r.getArea();
System.out.println("該長方形的周長是:"+zhouChang);
System.out.println("該長方形的面積是:"+area);
}
}
class Rect {
//長
int length;
//寬
int width;
//求周長
public int getZhouChang() {
return (length + width)*2;
}
//求面積
public int getArea() {
return length * width;
}
}