1. 程式人生 > 其它 >[Java基礎篇]面向物件與封裝——類與物件

[Java基礎篇]面向物件與封裝——類與物件

類(class)和物件(object)是兩種以計算機為載體的計算機語言的合稱。物件是對客觀事物的抽象,類是對物件的抽象。類是一種抽象的資料型別。它們的關係是,物件是類的例項,類是物件的模板。

類與物件

一、面向物件思想概述

  1. 概述

    ​ Java語言是一種面向物件的程式設計語言,而面向物件思想是一種程式設計思想,我們在面向物件思想的指引下, 使用Java語言去設計、開發計算機程式。 這裡的物件泛指現實中一切事物,每種事物都具備自己的屬性行為。面向物件思想就是在計算機程式設計過程中,參照現實中事物,將事物的屬性特徵、行為特徵抽象出來,描述成計算機事件的設計思想。 它區別於面向過程思想,強調的是通過呼叫物件的行為來實現功能,而不是自己一步一步的去操作實現。
    ​ 區別:
    面向過程:強調步驟。
    面向物件:強調物件。

  2. 特點

    ​ 面向物件思想是一種更符合我們思考習慣的思想,它可以將複雜的事情簡單化,並將我們從執行者變成了指揮者。 面向物件的語言中,包含了三大基本特徵,即封裝、繼承和多型

二、類和物件

  1. 類:是一組相關屬性行為的集合。可以看成是一類事物的模板,使用事物的屬性特徵和行為特徵來描述該 類事物。

    屬性:就是該事物的狀態資訊。
    行為:就是該事物能夠做什麼。

    舉例:小貓。
    屬性:名字、體重、年齡、顏色。
    行為:走、跑、叫。

  2. 物件

    物件:是一類事物的具體體現。物件是類的一個例項,必然具備該類事物的屬性 和行為。 現實中,一類事物的一個例項。

    舉例:一隻小貓。
    屬性:tom、5 kg、2 years、yellow。
    行為:溜牆根走、蹦躂的跑、喵喵叫。

  3. 類與物件的關係

    • 類是對一類事物的描述,是抽象的
    • 物件是一類事物的例項,是具體的
    • 類是物件的模板,物件是類的實體

三、類的定義

  • 事物與類的對比

    現實世界的一類事物:
    屬性:事物的狀態資訊。 行為:事物能夠做什麼。

    Java中用class描述事物也是如此:
    成員變數:對應事物的屬性成員方法:對應事物的行為

  • 類的定義格式

    public class ClassName {
        //成員變數 
        //成員方法 
    }
    

四、物件的使用

  • 物件的使用格式

    建立物件:

    類名 物件名 = new 類名();
    
  • 使用物件訪問類中的成員:

    物件名.成員變數;
    物件名.成員方法();
    

程式碼

public class Student {

    //成員變數
    String name;
    int age;

    //成員方法(不需要寫static關鍵字)
    public void eat() {
        System.out.println("吃飯");
    }
    public void sleep() {
        System.out.println("睡覺");
    }
}
public class DemoClass {

    public static void main(String[] arges) {

        Student stu = new Student();

        stu.name = "masahiko";
        stu.age = 20;

        System.out.println("student name:" + stu.name);
        System.out.println("student age:" + stu.age);

        stu.eat();
        stu.sleep();
    }
}

五、 成員變數和區域性變數

  • 成員變數和區域性變數的區別
成員變數 區域性變數
記憶體中的位置 堆記憶體 棧記憶體
在類中的位置 類中,方法外 方法中或者方法宣告上(形式引數)
作用範圍 類中 方法中
初始化值 有預設值 沒有預設值
生命週期 隨著物件的建立而存在
隨著物件的消失而消失
隨著方法的呼叫而存在
隨著方法的呼叫完畢而消失
  • 成員變數的預設值
資料型別 預設值
基本型別 整數(byte,short,int,long) 0
浮點數(float,double) 0.0
字元(char) '\u0000'
布林(boolean) false
引用型別 陣列,類,介面 null

參考資料:

​ 《Java核心技術 卷I 》Cay S. Horseman
​ 《Java教程零基礎入門到精通IDEA版》黑馬程式設計師