Java基礎(七)面向對象

什麼是面向對象

在日常生活中,人們會關注對象,關注事物信息,關注現實存在的事物的各方面的信息。因此,面向對象,就是從對象的角度出發,根據事物的特徵進行程序設計。

    

類和對象

類是模子,用來確定對象將會擁有什麼樣的特徵(屬性)和行爲(方法)。

對象是類的實例表現。

類是對象的類型。

對象是特定類型的數據。

對象:用來描述客觀事物的一個實體。

類:具有相同屬性和方法的一組對象的集合。

語法:

    //定義類

    public class 類名 {

        //定義屬性部分

        [訪問修飾符] 數據類型 屬性名;



        //定義方法部分

        [訪問修飾符] 返回類型 方法名(參數) {



        }

    }

 

創建並引用對象

    類名 對象名 = new 構造方法();

    對象名.屬性

    對象名.方法名()

 

屬性和方法

屬性:對象具有的各種靜態特徵。

           “對象有什麼”

方法:對象具有的各種動態行爲。

           “對象能做什麼”

 

類和對象的關係

類,是一個抽象的概念,我們可以理解爲模板,用於生產實體。

對象

通過模板生成的,一個看得到、摸得着的具體實體。

 

 

包名的推薦命名規範

1、英文字母小寫

2、域名的倒序

package com.pino.animal;

package com.pino.animal;

public class Cat {

    //成員屬性:暱稱、年齡、體重、品種

    String name;  //String類型默認值爲null

    int month;    // int 類型默認值爲0

    double weight;   //double 類型默認值爲0.0

    String species;  

    //成員方法:跑動、喫東西

    public void run() {

        System.out.println("小貓快跑");

    }

    public void eat() {

        System.out.println("小貓喫魚");

    }

}
package com.pino.animal;

public class CatTest {

    public static void main(String[] args) {

        //對象實例化

        Cat one = new Cat();

        //測試

        one.eat();

        one.run();

        System.out.println("暱稱:"+one.name);

        System.out.println("年齡:"+one.month);

        System.out.println("體重"+one.weight);

        System.out.println("品種:"+one.species);

    }

}

 

對象實例化

通過上面的 demo,我們可以總結一下,實例化對象的過程可以分爲兩部分:

        聲明對象 Cat one 會在內存的棧空間中開闢一塊區域,取名爲 one ,這個時候 one 指向的內容爲null,我們並不能像真正的對象那樣使用它。

        實例化對象 new Cat();    會在內存的堆空間中開闢一塊區域,完成對象的初始化工作。通過賦值符號(=)把該堆內存地址賦值給變量 one 。

 

 

構造方法

也叫構造函數、構造器。

構造方法不能被對象單獨調用,必須配合 new 關鍵字來使用。

注意:

1、構造方法與類同名且沒有返回值。

2、構造方法的語句格式。

public 構造方法名(){

    //初始化代碼

}

3、只能在對象實例化的時候調用。

4、當沒有指定構造方法時,系統會自動添加無參的構造方法。

5、當有指定構造方法時,無論是有參、無參的構造方法,都不會自動添加無參的構造方法。

6、一個類中可以有多個構造方法——構造方法重載

 

無參構造方法

通過下圖,我們可以清晰看到構造方法的格式和注意事項。

 

成員屬性的初始值

類中的成員屬性,數據類型爲基本類型,且沒有賦值時,默認值如下圖:

 

package com.pino.animal;

public class Cat {

    //成員屬性:暱稱、年齡、體重、品種

    String name;  //String類型默認值爲null

    int month;    // int 類型默認值爲0

    double weight;   //double 類型默認值爲0.0

    String species;

    public Cat() {

        System.out.println("調用了無參構造方法");

    }

}
package com.pino.animal;

public class CatTest {

    public static void main(String[] args) {

        //對象實例化

        Cat one = new Cat();

    }

}

/**  output

調用了無參構造方法

*/

 

帶參構造方法

this關鍵字

      this : 當前對象的默認引用。

this的使用

      調用成員屬性,解決成員屬性和局部變量同名衝突。

      調用同一個類中的成員方法。

      調用重載的構造方法。

    

package com.pino.animal;

public class Cat {

    //成員屬性:暱稱、年齡、體重、品種

    String name;  //String類型默認值爲null

    int month;    // int 類型默認值爲0

    double weight;   //double 類型默認值爲0.0

    String species;



    public Cat() {

        System.out.println("調用了無參構造方法");

    }

    public Cat(String name, int month, double weight, String species) {

        //通過this()調用構造方法必須放在方法體內第一行

        this();

        this.name = name;

        this.month = month;

        this.weight = weight;

        this.species = species;

    }

}
package com.pino.animal;

public class CatTest {

    public static void main(String[] args) {

        //對象實例化

        Cat one = new Cat("樂樂", 3, 11.0, "波斯貓");

        System.out.println("暱稱:"+one.name);

        System.out.println("年齡:"+one.month);

        System.out.println("體重"+one.weight);

        System.out.println("品種:"+one.species);

    }

}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章