Java4Android自學記錄(9-2):面向對象基礎(下)

1 目錄及資源索引

  Java4Android自學過程目錄及資源索引

2 面向對象基礎三

2.1 對象的使用方法

  使用對象調用變量和函數:

  1. 對象.變量
  2. 對象.函數()

2.2 實際測試

  我們用最熟悉的狗來舉個例子,先寫一個公共類,代碼如下:

class Dog
{
	String name;	// 狗的名字
	int age;		// 年齡
	String color;	// 顏色
	
	void jump()		// 狗的行爲 跳躍
	{
		System.out.println("jump");
	}
}

  寫一個主函數,用來測試這個類,相關代碼如下:

class Test
{
	public static void main(String args[])
	{
		Dog d = new Dog();		// 生成對象
		
		d.name  = "旺財";		// 給這隻狗取名叫 旺財
		d.age   = 2;			// 年齡 2歲
		d.color = "黑色";		// 狗的顏色爲 黑色
		
		d.jump();				// 旺財跳躍
		
		System.out.println("名字是" + d.name);
	}
}

  實際測試結果如下:
在這裏插入圖片描述

2.3 生成多個對象

  生成多個對象,具體代碼如下:

Dog d1 = new Dog();		// 狗1
Dog d2 = new Dog();		// 狗2

  內存圖,參考老師課件如下:
在這裏插入圖片描述
  個人總結來說,創建多個對象,基本就是調用多個生成對象,然後引用名字不同而已。就比如都是狗,一條狗生了一窩小狗狗,它們不一樣,但它們又都是狗。哈哈哈哈

2.4 匿名對象

  定義:可以不定義對象的引用名稱,而直接調用這個對象的方法。這樣的對象叫做匿名對象,比如:

new Dog().jump();

  沒有名字的對象,就是匿名對象,都是一次性的。
  接着老師提了一個很有意思的思考,如下兩行代碼,是一樣的嗎?

new Dog().jump();
new Dog().jump();

  雖然,看代碼格式,內容全都一樣,但這兩個不是同一個。

3 面向對象基礎四

3.1 函數的重載

  什麼是重載?先看代碼,舉例如下:

class A
{
	void funA()
	{
		System.out.println("沒有參數的funA函數");
	}

	void funA(int i)
	{
		System.out.println("有一個整形參數的funA函數");
	}

	void funA(int i, int j)
	{
		System.out.println("有兩個整形參數的funA函數");
	}
}

  由上述代碼就可以看到,這兩個函數就構成了重載,特徵如下:

  1. 處於同一個類;
  2. 函數名相同;
  3. 函數參數不同。

  關於重載,老師舉了一個很形象的例子,比如我們日常生活中的洗,洗這個行爲很抽象,可以洗臉,洗手,洗澡,洗菜,洗衣服等等,這就類似函數名相同,但是傳的參數不一樣。

  參考上述代碼可知,重載可以有多個參數。

  關於重載,具體的定義參考老師課件如下:

  1. 兩個或者多個函數在同一個類當中;
  2. 函數名相同;
  3. 參數列表不同;

3.2 構造函數

  構造函數具體樣式:類名 + ():構造函數

  構造函數相關特徵如下:

  1. 沒有返回值類型的定義;
  2. 構造函數的名字必須和類名相同;
  3. 如果構造函數沒有寫,編譯器在編譯時會自動創建。(參數,內容全爲空)

  構造函數作用:

  1. new + 構造函數:可以生成一個新的對象;
  2. 利用構造函數,爲對象類賦初始值;

3.3 實際測試代碼

  使用構造函數,爲對象類賦初值,可以很方便的簡化代碼,具體如下:

class Person
{
	Person()
	{
	
	}
	Person(String n, int a)
	{
		name = n;
		age = a;
	}

	String name;
	int age;
}

  主函數代碼如下:

class Test
{
	public static void main(String args[])
	{
		Person person1 = new Person("zhangsan", 10);
		Person person2 = new Person("lisi", 20);
	
		System.out.println("person1的name是" + person1.name + ", age是" + person1.age);
		System.out.println("person2的name是" + person2.name + ", age是" + person2.age);
	}
}

  由上述代碼,可以看到,在定義對象的時候,直接賦初值,會簡化很多重複代碼。

4 總結

  1. 學會了對象的使用方法;
  2. 學會了創建單個,多個對象的方法;
  3. 瞭解了什麼是匿名對象;
  4. 瞭解了什麼是函數重載;
  5. 瞭解了什麼是構造函數,及構造函數的部分作用;
  6. 簡單的實際測試了一下,還需要進一步加強。
發佈了92 篇原創文章 · 獲贊 84 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章