六、面向對象
1、系統結構圖(xmind)
2、tips
——1.理解面向對象
喬布斯是這樣理解面向對象的:
對象就像人一樣,也是活生生的生命。他們有知識,知道怎麼完成任務;他們有記憶,可以把發生的事情記下來。而你和他們的互動並不是低層次的,你是與他們在一個高度抽象的層面上互動,就像我們現在的對話一樣。
我舉個例子來說明。如果我是一個“洗衣”對象,你可以把髒衣服給我,然後告訴我說:“請幫我把這些衣服洗了吧!”而我恰好知道舊金山最好的洗衣房在哪,並且我會說英語,兜裏也有美元。於是我出門打了一輛出租車,告訴司機帶我去位於舊金山的洗衣房。我到了那裏洗好衣服之後,又坐車回到這裏。我把洗好的衣服交還給你,說:“你的衣服已經洗好了。”
你並不知道我是怎麼做到的。你不知道哪裏有洗衣店,也可能只會說法語,或者是兜裏沒錢,連車都打不了。但是我知道怎麼完成這項任務,而你不需要知道任何細節。所有的這些複雜流程都隱藏在我的內部,而我們之間可以高度抽象地互動。這就是對象。他們把複雜過程封裝在內部,而對外呈現的接口是高層次的,抽象的。
——2、成員變量和局部變量
——3.匿名對象
慄:
class Car
{
String color = "red";
int num = 4;
public static void run()
{
System.out.println("function run is running!" );
}
}
class CarDemo
{
public static void main(String[] args)
{
//對對象方法僅進行一次調用時,就可以使用匿名對象
new Car().run();
//匿名對象可以作爲實際參數進行傳遞
show(new Car());
}
public static void show(Car c)
{
c. num = 3;
c. color = "black" ;
System.out.println("function show is running!" );
System.out.println(c.num + "..." + c. color);
}
}
運行結果:
——4.封裝的表現形式之一——private(私有)
——5.構造函數
1.細節:當一個類沒有定義構造函數時,那麼系統就會默認給該類加入一個空參數的構造函數。當在類中自定義了構造函數後,默認的構造函數就沒有了。
2、構造函數和一般函數在寫法上有不同。
在運行上也有不同:
構造函數式在對象一建立就運行,給對象初始化。而一般方法是對象調用才執行,給是對象添加對象具備的功能。一個對象建立,構造函數只運行一次。而一般方法可以被該對象調用多次。
3、什麼時候定義構造函數?
當分析事物時,該事物存在具備一些特性或者行爲,那麼將這些內容定義在構造函數中。
4、構造代碼塊
作用:給對象進行初始化。對象一建立就運行,而且優先於構造函數運行。
和構造函數的區別:
構造代碼塊是給所以對象進行初始化。
而構造函數是給對應的對象初始化。
構造代碼塊中定義的是不同對象共性的初始化內容。
class Person
{
private String name;
private int age;
Person(int age)//局部變量時age,成員變量也是age
{
this.age = age;//this能夠很好區分
}
Person(String name)
{
this.name = name;//這裏用this表示調用構造方法的對象
}
Person(String name,int age)
{
this.name = name;
this.age = age;
}
public void speak()
{
System.out.println("name="+name+"...age="+age);
show();
}
public void show()
{
System.out.println(this.name);
}
}