天天看點

猿創征文 | Java知識【面向對象一】

1,類和對象

1.1:類和對象的了解

客觀存在的事物皆為對象 ,是以我們也常常說萬物皆對象。

  • 類的了解
  • 類是對現實生活中一類具有共同屬性和行為的事物的抽象
  • 類是對象的資料類型,類是具有相同屬性和行為的一組對象的集合
  • 簡單了解:類就是對現實事物的一種描述
  • 類的組成
  • 屬性:指事物的特征,例如:手機事物(品牌,價格,尺寸)
  • 行為:指事物能執行的操作,例如:手機事物(打電話,發短信)
  • 類和對象的關系
  • 類:類是對現實生活中一類具有共同屬性和行為的事物的抽象
  • 對象:是能夠看得到摸的着的真實存在的實體
  • 簡單了解:類是對事物的一種描述,對象則為具體存在的事物

1.2:類的定義

類的組成是由屬性和行為兩部分組成

  • 屬性:在類中通過成員變量來展現(類中方法外的變量)
  • 行為:在類中通過成員方法來展現(和前面的方法相比去掉static關鍵字即可)

類的定義步驟:

①定義類

②編寫類的成員變量

③編寫類的成員方法

public class 類名 {
  // 成員變量
  變量1的資料類型 變量1;
  變量2的資料類型 變量2;
  …
  // 成員方法
  方法1;
  方法2;  
}      

示例代碼:  

/*
    手機類:
        類名:
        手機(Phone)

        成員變量:
        品牌(brand)
        價格(price)

        成員方法:
        打電話(call)
        發短信(sendMessage)
 */
public class Phone {
    //成員變量
    String brand;
    int price;

    //成員方法
    public void call() {
        System.out.println("打電話");
    }

    public void sendMessage() {
        System.out.println("發短信");
    }
}      

1.3:對象的使用

  • 建立對象的格式:
  • 類名 對象名 = new 類名();
  • 調用成員的格式:
  • 對象名.成員變量
  • 對象名.成員方法();
  • 示例代碼
/*
    建立對象
        格式:類名 對象名 = new 類名();
        範例:Phone p = new Phone();

    使用對象
        1:使用成員變量
            格式:對象名.變量名
            範例:p.brand
        2:使用成員方法
            格式:對象名.方法名()
            範例:p.call()
 */
public class PhoneDemo {
    public static void main(String[] args) {
        //建立對象
        Phone p = new Phone();

        //使用成員變量
        System.out.println(p.brand);
        System.out.println(p.price);

        p.brand = "小米";
        p.price = 2999;

        System.out.println(p.brand);
        System.out.println(p.price);

        //使用成員方法
        p.call();
        p.sendMessage();
    }
}      

1.4:學生對象-練習

  • 需求:首先定義一個學生類,然後定義一個學生測試類,在學生測試類中通過對象完成成員變量和成員方法的使用
  • 分析:
  • 成員變量:姓名,年齡…
  • 成員方法:學習,做作業…
  • 示例代碼:
public class Student {
    //成員變量
    String name;
    int age;

    //成員方法
    public void study() {
        System.out.println("好好學習,天天向上");
    }

    public void doHomework() {
        System.out.println("鍵盤敲爛,月薪過萬");
    }
}
/*
    學生測試類
 */
public class StudentDemo {
    public static void main(String[] args) {
        //建立對象
        Student s = new Student();

        //使用對象
        System.out.println(s.name + "," + s.age);

        s.name = "林青霞";
        s.age = 30;

        System.out.println(s.name + "," + s.age);

        s.study();
        s.doHomework();
    }
}      

2,對象記憶體圖

2.1:單個對象記憶體圖

  • 成員變量使用過程
猿創征文 | Java知識【面向對象一】
  • 成員方法調用過程
猿創征文 | Java知識【面向對象一】

2.2:多個對象記憶體圖

  • 成員變量使用過程
猿創征文 | Java知識【面向對象一】
  • 成員方法調用過程
  • 總結:

    多個對象在堆記憶體中,都有不同的記憶體劃分,成員變量存儲在各自的記憶體區域中,成員方法多個對象共用的一份

3,成員變量和局部變量

3.1:成員變量和局部變量的差別

  • 類中位置不同:成員變量(類中方法外)局部變量(方法内部或方法聲明上)
  • 記憶體中位置不同:成員變量(堆記憶體)局部變量(棧記憶體)
  • 生命周期不同:成員變量(随着對象的存在而存在,随着對象的消失而消失)局部變量(随着方法的調用而存在,醉着方法的調用完畢而消失)
  • 初始化值不同:成員變量(有預設初始化值)局部變量(沒有預設初始化值,必須先定義,指派才能使用)