真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java面向?qū)ο螅ㄉ希?/h1>

Java面向?qū)ο螅ㄉ希?/h1>

一、面向?qū)ο蟮乃枷?/h2>

1、面向過程:

面向過程就是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟逐一實(shí)現(xiàn),使用的時候依次調(diào)用就可以了。

站在用戶的角度思考問題,與客戶深入溝通,找到內(nèi)黃網(wǎng)站設(shè)計(jì)與內(nèi)黃網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋內(nèi)黃地區(qū)。

2、面向?qū)ο螅?/span>

面向?qū)ο缶褪前褬?gòu)成問題的事物按照一定規(guī)則劃分為多個獨(dú)立的對象,然后通過調(diào)用對象的方法來解決問題。

3、面向?qū)ο蟮奶攸c(diǎn):

(1)封裝性:封裝性是面向?qū)ο蟮暮诵乃枷?,有兩層含義,一層含義是指吧對象的屬性和行為看成是一個密不可分的整體,將這兩者“封裝”在一起(即封裝在對象中);另一層含義是指“信息隱藏”,將不想讓外界知道的信息隱藏起來。

(2)繼承性:繼承性主要描述的是類與類之間的關(guān)系,通過繼承,可以在無需重新編寫原有類的情況下,對原有類的功能進(jìn)行拓展。

(3)多態(tài)性:多態(tài)性是指在一個類中定義的屬性和方法被其他類繼承后,他們可以具有 不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為,這使得同一個屬性和方法在不同的類中具有不同的語義。

二、類與對象

在java中,類與對象是最基本、最重要的單元。類表示某類群體的一些抽象基本特征,對象表示一個個具體的事物。

例如:學(xué)生可以是個類,而具體的一名學(xué)生,就可以稱為對象。這名具體的學(xué)生會有自己的姓名和年齡等信息,這些信息在面向?qū)ο蟮母拍钪蟹Q為屬性;學(xué)生可以看書和打籃球,而看書和打籃球這些行為在類中就稱為方法。

1、類的定義

類是java中一個重要的引用數(shù)據(jù)類型,所有的java程序都是基于類的。

類是對象的抽象,用于描述一組對象的共同特征和行為。類中可以定義成員變量和成員方法,其中,成員變量用于描述對象的特征,成員變量也被稱為對象的屬性;成員方法用于描述對象的行為,可簡稱為方法。

類的定義格式如下:

class 類名{
    成員變量;
    成員方法;    
}

1.2、局部變量與成員變量的不同

在java中,定義在類中的變量為成員變量,定義在方法中的變量稱為局部變量。如果在某一個方法中定義的局部變量與成員變量同名,這種情況是允許的,此時,在方法中通過變量名訪問到的是局部變量而非成員變量。

2、對象的創(chuàng)建與使用

在java程序的類中,想要使用一個類則必須要有對象。在java程序中可以使用“new 關(guān)鍵字”創(chuàng)建對象,具體格式如下:

類名 對象名稱 = null;
對象名稱 = new 類名 ();

具體實(shí)現(xiàn)的圖示如下:

從上圖可以看出,對象名稱uu(也就是Student類型變量uu)保存在棧內(nèi)存中,而對象的屬性信息則保存在對應(yīng)的堆內(nèi)存中

(即0x0001是地址值,不存儲在棧內(nèi)存中,它指向堆內(nèi)存中0x0001的地址)

當(dāng)我們創(chuàng)建完對象后(即Student uu = new Student;)可以使用對象訪問類中的某個屬性或方法,對象屬性和方法的訪問通過“.”運(yùn)算符實(shí)現(xiàn),具體格式如下:

對象名稱.屬性名
對象名稱.方法名

下面我舉一個例子進(jìn)行介紹:

package com.sdbi.hang;

class Student {
    String name;//聲明姓名的屬性

    void read() {
        System.out.println("大家好,我是" + name);
    }
}

public class example {
    public static void main(String[] args) {
        Student uu1 = new Student();//創(chuàng)建第一個Student對象
        Student uu2 = new Student();//創(chuàng)建第一個Student對象
        uu1.name = "小明";//為uu1對象的name屬性賦值
        uu1.read();//調(diào)用對象的方法
        uu2.name = "小花";//與上文一樣
        uu2.read();
    }
}

運(yùn)行結(jié)果如圖:

從上圖可以看出,程序分別實(shí)例化了兩個Student對象uu1和uu2,分別指向其各自的堆內(nèi)存空間(內(nèi)存地址)

3、對象的引用傳遞

類屬于引用數(shù)據(jù)類型,引用數(shù)據(jù)類型就是指內(nèi)存空間可以同時被多個棧內(nèi)存引用。下面我用一個例子來說明對象的引用傳遞。

package com.sdbi.hang;

class Student {
    String name;//聲明姓名的屬性
    int age;//聲明年齡屬性

    void read() {
        System.out.println("大家好,我是" + name + "年齡" + age);
    }
}

public class example {
    public static void main(String[] args) {
        Student uu1 = new Student();//聲明uu1對象并實(shí)例化
        Student uu2 = null;//聲明uu2對象,但不對其進(jìn)行實(shí)例化
        uu2 = uu1;//uu1給uu2分配空間使用權(quán)
        uu1.name = "小明";//為uu1對象的name屬性賦值
        uu1.age = 20;//定義uu1年齡20歲
        uu2.age = 40;//定義uu2年齡40歲
        uu1.read();//調(diào)用對象的方法
        uu2.read();
    }
}

運(yùn)行的結(jié)果如下圖所示:

通過這張圖片發(fā)現(xiàn),兩個對象輸出的內(nèi)容是一樣的,這是因?yàn)閡u2對象獲得了uu1對象的堆內(nèi)存空間使用權(quán)。其實(shí)就是對uu1的age屬性賦值20之后,過對uu2的age屬性賦值40,之后uu2的值把uu1的值覆蓋掉,所以輸出是40。

實(shí)際上所謂的引用傳遞,就是將一個堆內(nèi)存空間的使用權(quán)給多個棧內(nèi)存空間使用,每個棧內(nèi)存空間都可以修改堆內(nèi)存空間的內(nèi)容,運(yùn)行結(jié)果圖的分析如下:

從以上的四幅圖中可以發(fā)現(xiàn)堆內(nèi)存、棧內(nèi)存空間的變化,在程序的最后,uu2對象將age的值修改為50,因此最終結(jié)果uu1的age屬性值是50。

4、訪問控制

針對類、成員方法和屬性,java提供了四種訪問控制權(quán)限。這四個訪問權(quán)限由小到大依次是:

下面具體介紹一下控制權(quán)限

  • private:屬于私有訪問權(quán)限。用于修飾類的屬性和方法。類的成員如果用到了private,該成員就只能在本類中進(jìn)行訪問。
  • default:屬于默認(rèn)訪問權(quán)限。即在類中的屬性或方法沒有任何的訪問權(quán)限聲明時就會默認(rèn)為此訪問權(quán)限,默認(rèn)的訪問權(quán)限可以被本包之下的其他類調(diào)用,但是不能跨包調(diào)用。
  • protected:屬于受保護(hù)的訪問權(quán)限。只能被本包及不同包的子類訪問。
  • public:屬于公共訪問權(quán)限。即可以在全局范圍都可以訪問。

三、封裝性

1、為何要封裝

封裝可以被認(rèn)為是一個保護(hù)屏障,防止本類的代碼和數(shù)據(jù)被外部程序隨機(jī)訪問。所以需要封裝。

2、如何封裝

類的封裝是指將對象的狀態(tài)信息隱藏在對象內(nèi)部,不允許外部程序直接訪問對象的內(nèi)部信息,而是通過該類提供的方法實(shí)現(xiàn)對內(nèi)部信息的操作訪問。

在定義一個類時,將類中的屬性私有化,即使private關(guān)鍵字修飾類的屬性,被私有化的屬性只能在類中被訪問。如果外界想要訪問私有屬性,則必須通過getter和setter方法設(shè)置和獲取屬性值。

四、構(gòu)造方法

我們在java中實(shí)例化一個對象后,,如果要為這個對象的屬性賦值,必須通過直接訪問對象的屬性或調(diào)用setter方法才可以實(shí)現(xiàn),如果需要在實(shí)例化對象時為這個對象的屬性賦值,可以通過構(gòu)造方法來實(shí)現(xiàn)。(構(gòu)造方法也稱為構(gòu)造器)

1、定義構(gòu)造方法

構(gòu)造方法是一個特殊的成員方法,在定義時需注意一下幾點(diǎn)

  1. 構(gòu)造方法的名稱必須與類名一致、
  2. 構(gòu)造方法名稱前不能有任何返回值類型。
  3. 不能再構(gòu)造方法中使用return返回一個值,但是可以單獨(dú)寫return語句作為方法的結(jié)束。

2·1、構(gòu)造方法的重載

在一個類中可以定義多個構(gòu)造方法,只要每個構(gòu)造方法的參數(shù)類型不同或參數(shù)個數(shù)不同即可。在創(chuàng)建對象時,可以通過調(diào)用不同的構(gòu)造方法為不同的屬性賦值。

2·2、默認(rèn)構(gòu)造方法

在java中的每個類都至少有一個構(gòu)造方法,如果在一個類中沒有定義構(gòu)造方法,系統(tǒng)會自動為這個類創(chuàng)建一個默認(rèn)的構(gòu)造方法,這個默認(rèn)的構(gòu)造方法沒有參數(shù),方法體中沒有任何代碼。

通常構(gòu)造方法使用public修飾。

五、this關(guān)鍵字

在一個類中,當(dāng)成員變量與局部變量重名時,需要使用到this關(guān)鍵字分辨成員變量與局部變量,java中的this關(guān)鍵字語法比較靈活,主要作用有三點(diǎn)

  1. this關(guān)鍵字調(diào)用本類中的屬性。
  2. this關(guān)鍵字調(diào)用成員方法。
  3. this關(guān)鍵字調(diào)用本類的構(gòu)造方法。

六、代碼塊

簡單來說代碼塊就是用{}括起來的一段代碼。代碼塊具體可以分為四種,分別是:

  1. 普通代碼塊
  2. 構(gòu)造塊
  3. 靜態(tài)代碼塊
  4. 同步代碼塊

七、static關(guān)鍵字

在定義一個類時,只是在描述某事物的特征和行為,并沒有產(chǎn)生具體的數(shù)據(jù)。只有通過new關(guān)鍵字創(chuàng)建該類的勢力對象時,柴夔開辟棧內(nèi)存和堆內(nèi)存,在堆內(nèi)存中么個對象會有自己的屬性。如果希望某些屬性被所有對象共享,就必須將其聲明為static屬性。如果屬性使用了static關(guān)鍵字進(jìn)行修飾,則該屬性可以直接使用類名稱進(jìn)行調(diào)用。

1、靜態(tài)屬性

如果在java程序中使用static修飾屬性,則該屬性稱為靜態(tài)屬性(也稱為全局屬性),經(jīng)驗(yàn)屬性可以使用類名直接訪問,訪問格式如下:

類名。屬性名

備注:

static掛年至只能修飾成員變量,不能修飾局部變量,否則編譯器會報(bào)錯。

2、靜態(tài)方法

如果想要使用類中的成員方法,就需要先將這個類實(shí)例化,而在實(shí)際開發(fā)時,如果想不創(chuàng)建對象的情況下,通過類名就可以直接調(diào)用某個方法,要實(shí)現(xiàn)這樣的效果,只需要在成員方法前加上static關(guān)鍵字,使用static關(guān)鍵字修飾的方法通常稱為靜態(tài)方法。

備注:

靜態(tài)方法只能訪問靜態(tài)成員,因?yàn)榉庆o態(tài)成員需要先創(chuàng)建對選哪個才能訪問,即隨著對象的創(chuàng)建,非靜態(tài)成員才會被分配內(nèi)存。而靜態(tài)方法在被調(diào)用時可以不創(chuàng)建任何對象。

3、靜態(tài)代碼塊

用static關(guān)鍵字修飾的代碼塊稱為靜態(tài)代碼塊。當(dāng)類被加載時,靜態(tài)代碼塊會之星,由于類只加載一次,因此靜態(tài)代碼塊只執(zhí)行一次。通常使用靜態(tài)代碼塊對類的成團(tuán)變量進(jìn)行初始化。


網(wǎng)站標(biāo)題:Java面向?qū)ο螅ㄉ希?
瀏覽路徑:http://weahome.cn/article/dscgidp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部