全國(guó)咨詢(xún)/投訴熱線:400-618-4000

首頁(yè)技術(shù)文章正文

Java對(duì)象和類(lèi)的定義以及語(yǔ)法

更新時(shí)間:2020-09-09 來(lái)源:黑馬程序員 瀏覽量:

在面向?qū)ο蟮乃枷胫校詈诵牡木褪菍?duì)象。為了在程序中創(chuàng)建對(duì)象,首先需要定義一個(gè)類(lèi)。類(lèi)是對(duì)象的抽象,它用于描述一組對(duì)象的共同特征和行為,例如人都有姓名、年齡、性別等特征,還有學(xué)習(xí)、工作、購(gòu)物等行為。以面向?qū)ο蟮木幊趟枷耄涂梢詫⒛骋活?lèi)中共同的特征和行為封裝起來(lái),把共同特征作為類(lèi)的屬性(也叫成員變量),把共同行為作為類(lèi)的方法(也叫成員方法)。本節(jié)將對(duì)Java中類(lèi)的定義格式、類(lèi)的成員變量和成員方法進(jìn)行詳細(xì)講解。

1.類(lèi)的定義格式

Java中的類(lèi)是通過(guò)class關(guān)鍵字來(lái)定義的,其語(yǔ)法格式如下:

[修飾符] class 類(lèi)名 [extends 父類(lèi)名] [implements 接口名]{
    // 類(lèi)體,包括類(lèi)的成員變量和成員方法
 }


在上述語(yǔ)法格式中,class前面的修飾符可以是public,也可以不寫(xiě)(默認(rèn));class之后是定義的類(lèi)名,類(lèi)名首字母要大寫(xiě),并且其命名要符合標(biāo)識(shí)符的命名規(guī)則;extends和implements是可選項(xiàng),均為Java中的關(guān)鍵字,其中extends用于說(shuō)明所定義的類(lèi)繼承于哪個(gè)父類(lèi),implements關(guān)鍵字用于說(shuō)明當(dāng)前類(lèi)實(shí)現(xiàn)了哪些接口(這兩個(gè)關(guān)鍵字將在下一章詳細(xì)講解,這里作為了解即可)。后面大括號(hào){}中的內(nèi)容是類(lèi)體,即需要在類(lèi)中編寫(xiě)的內(nèi)容,它主要包括類(lèi)的成員變量和成員方法。

2.聲明(定義)成員變量

類(lèi)的成員變量也被稱(chēng)作類(lèi)的屬性,它主要用于描述對(duì)象的特征。例如,一個(gè)人的基本屬性特征有姓名、年齡、職業(yè)、住址等信息,在類(lèi)中要使用姓名、年齡等信息時(shí),就需要先將它們聲明(定義)為成員變量。

聲明(定義)成員變量的語(yǔ)法格式如下:

聲明(定義)成員變量的語(yǔ)法格式如下:
[修飾符] 數(shù)據(jù)類(lèi)型 變量名 [ = 值];


在上述語(yǔ)法格式中,修飾符為可選項(xiàng),用于指定變量的訪問(wèn)權(quán)限,其值可以是public、private等;數(shù)據(jù)類(lèi)型可以為Java中的任意類(lèi)型;變量名是變量的名稱(chēng),必須符合標(biāo)識(shí)符的命名規(guī)則,它可以賦予初始值,也可以不賦值。通常情況下,將未賦值(沒(méi)有被初始化)的變量稱(chēng)之為聲明變量,而賦值(初始化)的變量稱(chēng)之為定義變量。

例如,姓名和年齡屬性在類(lèi)中的聲明和定義方式如下:

private String name; // 聲明一個(gè)String類(lèi)型的name;

private int age = 20; // 定義一個(gè)int類(lèi)型的age,并賦值為20;

3.聲明(定義)成員方法

成員方法也被稱(chēng)為方法,類(lèi)似于C語(yǔ)言中的函數(shù),它主要用于描述對(duì)象的行為。一個(gè)人的基本行為特征有吃飯、睡覺(jué)、運(yùn)動(dòng)等,這些行為在Java類(lèi)中,就可以定義成方法。

定義一個(gè)方法的語(yǔ)法格式如下:

[修飾符] [返回值類(lèi)型] 方法名([參數(shù)類(lèi)型 參數(shù)名1,參數(shù)類(lèi)型 參數(shù)名2,...]){ 
    //方法體
    ...
     return 返回值; //當(dāng)方法的返回值類(lèi)型為void時(shí),return及其返回值可以省略
  }

上面語(yǔ)法格式中,[]中的內(nèi)容表示可選,各部分的具體說(shuō)明如下:

● 修飾符:方法的修飾符比較多,有對(duì)訪問(wèn)權(quán)限進(jìn)行限定的(如public、protected、private),有靜態(tài)修飾符static,還有最終修飾符final等,這些修飾符在后面的學(xué)習(xí)過(guò)程中會(huì)逐步講解。

● 返回值類(lèi)型:用于限定方法返回值的數(shù)據(jù)類(lèi)型,如果不需要返回值,可以使用void關(guān)鍵字。

● 參數(shù)類(lèi)型:用于限定調(diào)用方法時(shí)傳入?yún)?shù)的數(shù)據(jù)類(lèi)型。

● 參數(shù)名:是一個(gè)變量,用于接收調(diào)用方法時(shí)傳入的數(shù)據(jù)。

● return關(guān)鍵字:用于結(jié)束方法以及返回方法指定類(lèi)型的值,當(dāng)方法的返回值類(lèi)型為void時(shí),return及其返回值可以省略。

● 返回值:被return語(yǔ)句返回的值,該值會(huì)返回給調(diào)用者。

在上述語(yǔ)法中,{}之前的內(nèi)容被稱(chēng)之為方法簽名(或方法頭),而{}中的執(zhí)行語(yǔ)句被稱(chēng)為方法體。需要注意的是,方法簽名中的“[參數(shù)類(lèi)型 參數(shù)名1,參數(shù)類(lèi)型 參數(shù)名2,...]”被稱(chēng)作參數(shù)列表,它用于描述方法在被調(diào)用時(shí)需要接收的參數(shù),如果方法不需要接收任何參數(shù),則參數(shù)列表為空,即()內(nèi)不寫(xiě)任何內(nèi)容。關(guān)于上述語(yǔ)法結(jié)構(gòu)中的修飾符內(nèi)容,將在后面進(jìn)行逐一的講解,這里讀者只需了解如何定義類(lèi)、成員變量和成員方法即可。

了解了類(lèi)及其成員的定義方式后,接下來(lái)通過(guò)一個(gè)具體的案例來(lái)演示一下類(lèi)的定義,如文件1所示。

文件1 Person.java

public class Person {
        int age;        // 聲明int類(lèi)型的變量age
        // 定義 speak() 方法
        void speak() {  
            System.out.println("我今年" + age + "歲了!");
        }
}

文件1中定義了一個(gè)Person類(lèi),并在類(lèi)中定義了類(lèi)的成員變量和成員方法。其中,Person是類(lèi)名,age是類(lèi)的成員變量,speak()是類(lèi)的成員方法。在成員方法speak()中可以直接訪問(wèn)成員變量age。

腳下留心

在Java中,定義在類(lèi)中的變量被稱(chēng)為成員變量,定義在方法中的變量被稱(chēng)為局部變量。如果在某一個(gè)方法中定義的局部變量與成員變量同名,這種情況是允許的,此時(shí)方法中通過(guò)變量名訪問(wèn)到的是局部變量,而并非成員變量,請(qǐng)閱讀下面的示例代碼:

public class Person {
    int age = 10;    // 類(lèi)中定義的變量被稱(chēng)作成員變量
    void speak() { 
      int age = 30; // 方法內(nèi)部定義的變量被稱(chēng)作局部變量
      System.out.println("我今年" + age + "歲了!");
    }
}

上面的代碼中,speak()方法中的打印語(yǔ)句所訪問(wèn)的變量age,就是局部變量,也就是說(shuō),當(dāng)有另外一個(gè)程序來(lái)調(diào)用speak()方法時(shí),輸出的值為30,而不是10。




猜你喜歡:

Java中類(lèi)和對(duì)象是什么關(guān)系?

如何理解面向?qū)ο蟮姆庋b、繼承和多態(tài)?

java面向?qū)ο笏枷朐趺蠢斫?

java視頻教程下載

分享到:
在線咨詢(xún) 我要報(bào)名
和我們?cè)诰€交談!