提到面向對象,咱們就不得不提到面向過程,什麼是面向過程呢,若是小夥伴們在大學的時候學過C語言的話,想必對面向過程應該是不陌生的,或者學過C plus plus 的前半部分,c plus plus 也是有面向對象的。。,面向過程:以步驟爲單位,一步一步完成某一個具體的事情,面向對象:以對象爲單位,經過調度組合不一樣的對象來完成某一個事情,面向對象更高級一些!
舉個例子:軒軒買彩票中了600塊錢,打算去創業賣煎餅,我作事情的過程全都我一我的來,租三輪,買原料,灌煤氣,親手攤煎餅,而後親手收錢每件事情都得本身親手來,這個創業的過程就是面向過程,可是後來呢我攤的 煎餅很好吃,很是好吃,忙不過來了,我就開始招人了,有專門收錢的,專門攤煎餅的,專門買面的,還有專門蹬三輪的。。。,而後軒軒呢就負責支配他們,讓他們幫我賣煎餅,軒軒調度人手的辦事的過程就是面向對象了!
面向對象是一種編程思想
面向對象是一種思考問題的思惟方式java
先總體,再局部
先抽象,再具體
能作什麼,再作什麼程序員
掌握一門面向對象語言的語法
熟悉面向對象的設計原則
熟悉面向對象設計模式 大概23中 經常使用的十來種編程
一、類是:分類、類別。
二、經過分類,咱們能夠區別不一樣的事物種類,在平常生活當中,咱們經常這樣作。
三、因此,類是一組具備相同特性(屬性)與行爲(方法)的事物集合。 咱們除了特徵和 行爲以外,還能經過其餘的東西分類了,咱們發現沒有了!屬性和行爲好像就能把全部的東西都能分類了設計模式
一、類表示一個共性的產物,是一個綜合的特徵,而對象,是一個個性的產物,是一個個體的特徵。
二、類由屬性和方法組成:
· 屬性:就至關於一個個的特徵
· 方法:就至關於人的一個個的行爲,例如:說話、吃飯、唱歌、睡覺
類就是類別分類,對象就是這個類裏邊的實例,好比男人這個分類,那我就是一個對象!再舉個例子軒軒就是個對象,程序員就是類!程序員的屬性就是頭髮少,錢多,話少,死的早!數組
在Java中可使用如下的語句定義一個類:學習
class 類名稱{
屬性名稱;
返回值類型 方法名稱(){}
}
複製代碼
對象的定義: 一個類要想真正的進行操做,則必須依靠對象,對象的定義格式以下:spa
類名稱 對象名稱 = new 類名稱() ;
複製代碼
按照以上的格式就能夠產生對象了,我去...原來搞個對象那麼容易哈..new 一下就一個對象嘖嘖嘖設計
若是要想訪問類中的屬性或方法(方法的定義),則能夠依靠如下的語法形式:
訪問類中的屬性:3d
對象.屬性 ;
複製代碼
調用類中的方法:指針
對象.方法();
複製代碼
在java中對象聲明有兩種含義
聲明對象:
Horse horse= null; ;
// 表示聲明瞭一個對象,可是此對象沒法使用,horse沒有具體的內存指向
複製代碼
實例化對象:
horse= new Horse() ;
// 表示實例化了對象,可使用
//經過對象調用方法:
horse.eat()
//匿名對象調用方法:
new Horse().eat()
複製代碼
代碼實例:
public class Test8{
public static void main(String[] args){
//類的使用
Horse h=null;//聲明一個類的變量(變量 除了八種基本數據類型 都是引用類型,包括數組)
//建立一個Horse類型的對象 (實例化一個對象)
h=new Horse();
//有了對象,咱們就能夠調用對象的屬性和方法
h.name="赤兔馬";
h.age=350;
h.run();//調用方法 方法就被執行了
h.eat();
//匿名對象:只能使用一次 用完後就會被釋放
new Horse().eat();
h=null;//把對象釋放掉
// h.eat(); 當對象不存在時,調用改對象的方法和屬性會報空指針異常
}
}
//自定義一個類(類型 引用類型) Horse 類
class Horse{
//在類中定義屬性(特徵)
String name;
int age;
//定義方法
public void run(){
System.out.println("我是"+name+",我"+age+"歲了,我還能日行千里");
}
public void eat(){
System.out.println("我吃仙草,還吃得多");
}
}
複製代碼
一、new 關鍵字表示建立一個對象
二、new 關鍵字表示實例化對象
三、new 關鍵字表示申請內存空間
注意:若是使用一個沒有申請內存空間的對象,會報空指針異常: java.lang.NullPointerException
對象在內存中的結構:
Horse horse= null;
horse = new Horse();
字符串的默認值是null, int的默認值是0;在內存中建立多個對象:
分別給兩個對象的屬性賦值: 聲明兩個對象,一個實例化,一個沒實例化 對象之間的賦值: horse2沒有實例化,可是把horse1賦值給horse2了,賦值的過程就是,將horse1的地址給了horse2,因此如今是horse1和horse2指向了同一塊內存,因此如今把horse2.name="嘿嘿",你打印出來horse1的name也等於嘿嘿