天天看點

【小白的java成長系列】——面向對象基礎

今天來說說java面向對象的知識點~事實上。java在其發展過程中可以成功。非常大一部分原因是其面向對象的思想~

1、概念

如今來說面向對象思想。也不是什麼新的知識點了,我們知道如今非常多語言都有面向對象的思想了;當然我們還知道如今依然非常火的C語言。事實上還是面向過程的語言。包含近期一段時間也出現了非常多新的思想,比方面向函數,面向分布式,面向...等等一系列的東東,事實上這些都僅僅是一個概念而已~

在面向對象中。實際上還存在着三個基本的特性:

·封裝性:保證對外部不可見;

·繼承性:繼續發揚廣大。

·多态性:就屬于變來變去;

2、類與對象

好了,概念說完了。來說說類與對象吧。。

類:類是一組共性的産物,是同一類事物的集中表現。

對象:是一種個性的展現,是個體的産物。

這句話非常重要:類是對象的模闆。對象是類的執行個體

3、java中類的定義

java中定義類有兩種方式:public class和class

· 使用 public class 聲明的類必須與檔案名同樣,假設使用class 聲明的類能夠與檔案名不同

· 在一個*.java的檔案之中,僅僅能存在一個public class。可是能夠同一時候存在多個class的定義

· 僅僅要是定義類則要求每一個單詞的首字母大寫 ——> 約定

比方這邊的People.java檔案裡的定義:

package me.javen.oop;//包名

class Person { // 定義類
	String name; // 定義屬性
	int age; // 定義屬性

	public void say() { // 定義方法
		System.out.println("123");
	}
}

public class People { // 定義類

	public static void main(String[] args) {// 定義方法

	}

}      

4、java中使用類——>對象

那麼上面定義的類,怎麼來使用呢?

Person person = null;//在棧記憶體中聲明,此過程叫做聲明對象
person = new Person();//開辟相應的堆記憶體空間,此過程叫做執行個體化對象      

事實上能夠寫成一條語句的,一般在開發中也是一條的~

即:Person person = new Person();

這邊是為了說明其記憶體結構才寫成兩條的。

【小白的java成長系列】——面向對象基礎

看下面程式:

public static void main(String[] args) {// 定義方法
		Person person = null;
		person = new Person();
		
		//使用類中的屬性
		person.name="Mr.稻帥";
		person.age=24;
		
		person.say();	//用法
	}      

這樣子,類和對象的基本使用就基本介紹完畢了。。

以下來介紹構造方法

5、構造方法

定義:在一個類中定義的方法名稱與類名稱同樣。且無傳回值聲明的方法,稱為構造方法。

還是看到剛剛的代碼:person = new Person();

事實上在new的過程中,new的是Person類的預設構造方法。

記住:在一個類中假設沒有明白的定義一個構造方法的話,則會自己主動生成一個無參的,什麼都不做的構造方法。假設類中存在構造方法,則在new的過程中就必須使用定義了的構造方法。

這句話對于小白,了解起來可能有點困難,分号前面的可能好了解一點..參考Person就能了解前半句。後半句關于使用構造方法可能就有點困難了。事實上也不難,看以下程式:

【小白的java成長系列】——面向對象基礎

看到了不,eclipse的java文法校驗會報錯,報的是未定義Person()這樣一個構造方法,而在Person類中定義的是Person(String name, int age)這種一個構造方法。。

當然構造方法能夠定義多個的~

class Person { // 定義類
	String name; // 定義屬性
	int age; // 定義屬性

	
	public Person(String name, int age) {// 定義兩個參數的構造方法

	}

	public Person(String name) {// 定義一個參數的構造方法

	}

	public Person() {// 定義無參構造方法

	}

	public void say() { // 定義方法
		System.out.println("姓名:" + name + "。年齡:" + age);
	}
}      

這樣,構造方法也算是說完了。。

以下來說說封裝性。

6、封裝性

從定義上看:封裝性就是指類内部的定義對外部不可見。

作用是為了保護資料的安全性~

那什麼叫做對外部不可見?

看代碼:

private String name; // 定義屬性
	private int age; // 定義屬性      
【小白的java成長系列】——面向對象基礎

在使用的過程中就會有錯誤,提示的是沒有權限訪問(對外部不可見)

以上的一種形式就叫做封裝~

那麼,name和age屬性怎麼訪問了?

package me.javen.oop;//包名

class Person { // 定義類
	private String name; // 定義屬性
	private int age; // 定義屬性

	/*
	 * 對封裝的屬性使用setter和getter方法
	 */
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public Person(String name, int age) {// 定義兩個參數的構造方法
	}

	public Person(String name) {// 定義一個參數的構造方法
	}

	public Person() {// 定義無參構造方法
	}

	public void say() { // 定義方法
		System.out.println("姓名:" + name + ",年齡:" + age);
	}
}

public class People { // 定義類
	public static void main(String[] args) {// 定義方法
		Person person = null;
		person = new Person();// 添加了無參構造方法
		// 通過setter方法設定值
		person.setName("Mr.稻帥");
		person.setAge(24);

		person.say(); // 用法
		//通過getter方法擷取封裝了的屬性的值
		System.out.println("姓名:" + person.getName() + ",年齡:" + person.getAge());
	}

}
      

注意:

1、屬性或方法不希望被外部所訪問的話。則能夠使用privatekeyword聲明;