面向對象01

1. 面向對象和麪向過程的區別?

面向過程就是分析出解決問題的步驟,然後用函數一步一步實現,在使用的時候調用即可;

面向對象則是把解決的問題按照一定規則劃分爲多個獨立的對象,然後通過調用對象的方法來解決問題。

面向對象優點:易維護、易複用、易擴展,由於面向對象有封裝、繼承、多態性的特性,可以設計出低耦合的系統,使系統更加靈活、更加易於維護 

缺點:性能比面向過程低

2. 類和對象

 什麼是類?什麼是對象?

  1)現實世界是由很多對象組成的

       基於對象抽出了類

  2)對象:真實存在的單個的個體

       類:類型/類別,一類個體

3)類中可以包含:

       3.1)所有對象所共有的特徵/屬性(靜)---變量

       3.2)所有對象所共有的行爲(動)------方法

  4)一個類可以創建多個對象

       同一個類的多個對象,結構相同,數據不同

  5)類是對象的模板,對象是類的具體的實例

3. 對象的創建流程?

4.1)javac編譯源代碼,生成若干個字節碼

4.2)java將相關的字節碼文件加載進JVM中的方法區

4.3)JVM在方法區中找main主函數加載進棧內存中運行

4.4)主函數進棧

4.5)創建對象的流程

在堆內存中開闢對象的空間並分配地址

對成員變量進行默認初始化

相應的構造函數進棧 先進行顯示初始化

再執行構造函數的代碼 進行針對性初始化

構造函數出棧 對象創建完畢 將對象的地址賦予在函數中的變量

創建對象內存圖解

4. 私有private關鍵字

  • 是一個權限修飾符,用於修飾成員變量和成員方法.
  • 私有是針對類,而不是針對對象,也就是說,同一個類的所有的不同的對象之間,可以互相訪問別的對象的的私有的成員.
  • 被私有化的成員只在本類中有效.
  • 因此對私有的變量進行訪問 可以提供對應的 setXxx或者getXxx的方法
class Person{
	private int age; //私有成員變量
	private String name;
	//對外提供設置成員變量的方法
	public void setAge(int a){
		//由於是設置成員變量的值,這裏可以加入數據的驗證 
		if( a < 0 || a > 130 ){             
			System.out.println(a+"不符合年齡的數據範圍");             
			return; 
		}
	}
	 public int getAge(){
		return age;
	}
}

 5. 構造函數

構造函數(構造方法、構造器、構建器)

   1)常常用於給成員變量賦初值

   2)構造函數名與類同名,沒有返回類型(不寫void),有return。

   3)在創建(new)對象時被自動調用(有參傳參)

   4)若自己不寫構造函數,則編譯器默認提供無參構造,若自己寫了構造,則不再默認提供

   5)構造方法可以重載

構造函數的格式

修飾符 構造函數名(參數列表){ }

class Person{
	private int age;
	private String name;
	//Person的無參構造
	Person(){
		
	}
	//Person的一個參數構造
	Person(int a){
		this.age=a;
	}
	//Person的兩個參數構造
		Person(int a,String nm){
			this.age=a;
			this.name=nm;
		}
}

6. 構造函數和成員函數的區別?

構造函數沒有返回值 成員函數可有可沒有

構造函數只有在創建對象時被調用 對象創建完畢後不能被對象調用。成員函數在對象創建之後由對象調用

構造函數可以調用構造函數

構造函數可以調用成員函數 但是這個成員函數一般不會當作對象的特有行爲去看待。

7. this關鍵字

指代當前對象,哪個對象調指的就是哪個對象,方法中訪問成員變量之前默認都有個this

this的用法:

   1)this.成員變量名-------訪問成員變量

   2)this.方法名()---------------調用方法

   3)this()--------------------------調用構造方法,不能相互調用,必須在第一行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章