1 目錄及資源索引
2 面向對象基礎三
2.1 對象的使用方法
使用對象調用變量和函數:
- 對象.變量
- 對象.函數()
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函數");
}
}
由上述代碼就可以看到,這兩個函數就構成了重載,特徵如下:
- 處於同一個類;
- 函數名相同;
- 函數參數不同。
關於重載,老師舉了一個很形象的例子,比如我們日常生活中的洗,洗這個行爲很抽象,可以洗臉,洗手,洗澡,洗菜,洗衣服等等,這就類似函數名相同,但是傳的參數不一樣。
參考上述代碼可知,重載可以有多個參數。
關於重載,具體的定義參考老師課件如下:
- 兩個或者多個函數在同一個類當中;
- 函數名相同;
- 參數列表不同;
3.2 構造函數
構造函數具體樣式:類名 + ():構造函數
構造函數相關特徵如下:
- 沒有返回值類型的定義;
- 構造函數的名字必須和類名相同;
- 如果構造函數沒有寫,編譯器在編譯時會自動創建。(參數,內容全爲空)
構造函數作用:
- new + 構造函數:可以生成一個新的對象;
- 利用構造函數,爲對象類賦初始值;
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 總結
- 學會了對象的使用方法;
- 學會了創建單個,多個對象的方法;
- 瞭解了什麼是匿名對象;
- 瞭解了什麼是函數重載;
- 瞭解了什麼是構造函數,及構造函數的部分作用;
- 簡單的實際測試了一下,還需要進一步加強。