java基礎06

面向對象:

  是相對與面向過程而言的一種編程思想。

  面向過程:強調完成功能的過程。

  面向對象:關注完成功能的結果。只管哪個對象完成這個功能

            將功能封裝進對象,強調具備了功能的對象

面向對象是基於面向過程。

思想特點:

        是一種符合人們思考習慣的思想

        可以將複雜的事情簡單化

         將程序員從執行者轉換成了指揮者

以後在完成任何需求的時候,先找有沒有具備這種功能的對象,如果有就用,如果沒有就自己寫出來,將來還可以方便別人使用。

舉例說明:

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;
	}
}


 

 

發佈了42 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章