国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

深度剖析java類和對(duì)象

這篇具有很好參考價(jià)值的文章主要介紹了深度剖析java類和對(duì)象。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

個(gè)人主頁(yè):兜里有顆棉花糖
歡迎 點(diǎn)贊?? 收藏? 留言? 加關(guān)注??本文由 兜里有顆棉花糖 原創(chuàng)
收錄于專欄【JavaSE_primary】
深度剖析java類和對(duì)象,JavaSE_primary,java,開發(fā)語(yǔ)言,面向?qū)ο? referrerpolicy=

在Java中,一切皆對(duì)象。

一、類的定義和使用

在Java中,我們通過類來描述對(duì)象。

類的定義:Java類是面向?qū)ο缶幊讨械幕緲?gòu)建模塊,用于描述對(duì)象的屬性(成員變量)和行為(方法)。

1.1類的定義格式

Java類的定義格式如下:

[訪問修飾符] class 類名 {
    // 成員變量(屬性)
    
    // 構(gòu)造方法
    
    // 方法
}

一個(gè)類應(yīng)該有以下幾部分組成:類聲明、成員變量、成員方法、構(gòu)造方法、訪問修飾符。

1.2定義學(xué)生類

class Student{
	//成員變量
	public String name;
	public String gender;
	public short age;
	public double score;
	
	//方法
	public void DoClass(){}
	public void DoHomework(){}
	public void Exam(){}
}

我們定義類時(shí)應(yīng)該注意一下注意事項(xiàng):

1.一般一個(gè)文件當(dāng)中只定義一個(gè)類
2.main方法所在的類一般要使用public修飾
3.public修飾的類必須要和文件名相同
4.不要輕易去修改public修飾的類的名稱,如果要修改,通過開發(fā)工具修改

二、類的實(shí)例化

我們首先要知道,我們定義一個(gè)類時(shí)其實(shí)就是在計(jì)算機(jī)當(dāng)中自定義了一個(gè)類型,就像int、double一樣,只不過類這個(gè)類型時(shí)我們自己定義的而已,而int、double這樣的類型是Java語(yǔ)言自帶的內(nèi)置數(shù)據(jù)類型。

有了類這個(gè)類型(可以理解為我們自己定義的一種自定義類型)之后,我們就可以利用類這個(gè)類型來定義實(shí)例(也稱對(duì)象)了,這個(gè)過程就稱為類的實(shí)例化。

舉個(gè)例子:
下面有一個(gè)Teacher類,請(qǐng)看:

class Teacher{
	//成員變量或字段
    public String name;
    public int age;
    public int ID;

	//成員函數(shù)
    public void work(){
        System.out.println("今天的工作是教學(xué)");
    }
    public void wages(){
        System.out.println("本月的工資為10000");
    }
}

我們現(xiàn)在實(shí)力化一個(gè)Teacher類對(duì)象,請(qǐng)看:

public class Test2 {
    public static void main(String[] args) {
        //通過new來實(shí)例化一個(gè)Teacher對(duì)象
        Teacher t1 = new Teacher();
        t1.name = "李華";
        t1.age = 25;
        t1.ID = 123456;

        System.out.println(t1.name);
        System.out.println(t1.age);
        System.out.println(t1.ID);

        t1.work();
        t1.wages();
    }
}

運(yùn)行結(jié)果如下:
深度剖析java類和對(duì)象,JavaSE_primary,java,開發(fā)語(yǔ)言,面向?qū)ο? referrerpolicy=
深度剖析java類和對(duì)象,JavaSE_primary,java,開發(fā)語(yǔ)言,面向?qū)ο? referrerpolicy=

關(guān)于類的實(shí)例化這里有以下幾點(diǎn)需要注意:

1.通過new 關(guān)鍵字來實(shí)例化一個(gè)對(duì)象。
2.使用 . 來訪問對(duì)象中的屬性和方法。
3.同一個(gè)類可以實(shí)例化多個(gè)對(duì)象。
4.**當(dāng)成員變量沒有賦值的時(shí)候,默認(rèn)值就是其對(duì)應(yīng)的初始值。**即int->0 float->0.0f boolean->false char->'\u0000'

三、this引用

3.1this引用是什么

概念:this引用指向當(dāng)前對(duì)象(成員方法運(yùn)行時(shí)調(diào)用該成員方法的對(duì)象),在成員方法中所有成員變量的操作,都是通過該引用去訪問。

下面是日期類對(duì)象,請(qǐng)看:

class Date {
    public int year;
    public int month;
    public int day;
    public void setDay(int year, int month, int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }
    public void printDate(){
        System.out.println(this.year + "-" + this.month + "-" + this.day);
    }
}
public class Test3 {
    public static void main(String[] args) {
        //先構(gòu)造3個(gè)日期類對(duì)象
        Date d1 = new Date();
        Date d2 = new Date();
        Date d3 = new Date();

        //對(duì)每個(gè)對(duì)象的成員變量進(jìn)行賦值
        d1.setDay(23,8,30);
        d2.setDay(23,8,31);
        d3.setDay(23,9,1);

        //對(duì)每個(gè)日期類對(duì)象進(jìn)行打印
        d1.printDate();
        d2.printDate();
        d3.printDate();
    }
}

運(yùn)行結(jié)果如下:
深度剖析java類和對(duì)象,JavaSE_primary,java,開發(fā)語(yǔ)言,面向?qū)ο? referrerpolicy=

注意關(guān)鍵字this用于引用當(dāng)前對(duì)象,即調(diào)用當(dāng)前方法的對(duì)象。它可以在對(duì)象的成員方法中引用當(dāng)前對(duì)象的成員變量和方法。
請(qǐng)看舉例:

class MyClass {
    private int value;

    public void printValue() {
        System.out.println(this.value); // 使用this引用當(dāng)前對(duì)象的成員變量
    }
}

3.2this引用特性

this引用有如下幾個(gè)特性:

  1. this的類型:對(duì)應(yīng)類類型引用,即哪個(gè)對(duì)象調(diào)用就是哪個(gè)對(duì)象的引用類型
  2. this只能在成員方法中使用(靜態(tài)成員方法無(wú)法使用)
  3. 在成員方法中,this只能引用當(dāng)前對(duì)象,不能再引用其他對(duì)象
  4. this是成員方法第一個(gè)隱藏的參數(shù),編譯器會(huì)自動(dòng)傳遞,在成員方法執(zhí)行時(shí),編譯器會(huì)負(fù)責(zé)將調(diào)用成員方法對(duì)象的引用傳遞給該成員方法,this負(fù)責(zé)來接收

四、對(duì)象的構(gòu)造及初始化

4.1如何初始化對(duì)象

我們先來看一個(gè)問題,如果一個(gè)對(duì)象沒有對(duì)其成員變量賦值的話,那能不能打印其成員變量呢?依然是那日期類對(duì)象來進(jìn)行舉例:
深度剖析java類和對(duì)象,JavaSE_primary,java,開發(fā)語(yǔ)言,面向?qū)ο? referrerpolicy=

運(yùn)行結(jié)果如下:深度剖析java類和對(duì)象,JavaSE_primary,java,開發(fā)語(yǔ)言,面向?qū)ο? referrerpolicy=

可以看到這里并沒有報(bào)錯(cuò)。因?yàn)槿绻覀儧]有顯式的初始化對(duì)象的成員變量,那么編譯器就會(huì)默認(rèn)將對(duì)象的成員變量進(jìn)行初始化。

4.2構(gòu)造方法

我們也可以通過構(gòu)造方法來對(duì)對(duì)象進(jìn)行初始化。

構(gòu)造方法概念:構(gòu)造方法(也稱為構(gòu)造器)是一個(gè)特殊的成員方法,構(gòu)造方法的名字必須與類名相同,在創(chuàng)建對(duì)象時(shí),由編譯器自動(dòng)調(diào)用,并且在整個(gè)對(duì)象的生命周期內(nèi)只調(diào)用一次。

請(qǐng)看舉例:

//不帶參數(shù)的構(gòu)造函數(shù)
public Date(){
    System.out.println("不帶參數(shù)的構(gòu)造方法");
}
//帶參數(shù)的構(gòu)造函數(shù)
public Date(int year,int month,int day){
    System.out.println("帶參數(shù)的構(gòu)造方法");
}

我們要想實(shí)例化一個(gè)對(duì)象,就必須調(diào)用構(gòu)造函數(shù),因?yàn)橹挥姓{(diào)用完構(gòu)造函數(shù)之后,才算真正實(shí)例化出了一個(gè)對(duì)象(調(diào)用完構(gòu)造函數(shù)之后對(duì)象才算真正意義上的產(chǎn)生)。

另外,構(gòu)造方法是可以構(gòu)成重載的,如上(一個(gè)帶參數(shù)、一個(gè)不帶參數(shù)的構(gòu)造方法)。

4.3構(gòu)造方法特性

  • 名字必須與類名相同
  • 沒有返回值類型,設(shè)置為void也不行
  • 當(dāng)創(chuàng)建對(duì)象時(shí)由編譯器自動(dòng)調(diào)用構(gòu)造函數(shù),并且在對(duì)象的生命周期內(nèi)只調(diào)用一次。
  • 如果我們自己寫了構(gòu)造方法(無(wú)論是帶參數(shù)還是不帶參數(shù)),編譯器則不會(huì)自己生成構(gòu)造函數(shù)。
  • 當(dāng)沒有顯式定義構(gòu)造方法,編譯器會(huì)自動(dòng)為我們生成一個(gè)不帶參數(shù)的構(gòu)造方法
  • 構(gòu)造方法支持重載(根據(jù)自己需求來提供不同參數(shù)的構(gòu)造方法)
  • 大多數(shù)情況下,構(gòu)造方法用public來進(jìn)行修飾,特殊場(chǎng)景下需要用private來修飾。

4.4調(diào)用本類當(dāng)中其它構(gòu)造方法

什么是調(diào)用本類當(dāng)中其它構(gòu)造方法呢?請(qǐng)看舉例:

class Date {
    public int year;
    public int month;
    public int day;
	//無(wú)參構(gòu)造
    Date(){
        //調(diào)用本類當(dāng)中其它構(gòu)造方法
        this(23,5,21);//不許放在構(gòu)造方法里面而且是第一行
        System.out.println("不帶參數(shù)的構(gòu)造方法");
    }
    //帶參構(gòu)造
    Date(int year,int month,int day){
        System.out.println("帶參數(shù)的構(gòu)造方法");
    }
    public void setDay(int year, int month, int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }
    public void printDate(){
        System.out.println(this.year + "-" + this.month + "-" + this.day);
    }
}

this(…)有兩點(diǎn)需要注意

  • 必須放在構(gòu)造方法中且是第一行
  • 不能形成環(huán)

4.5默認(rèn)初始化

默認(rèn)初始化是指在創(chuàng)建對(duì)象時(shí),如果沒有顯式地對(duì)成員變量進(jìn)行初始化,Java會(huì)使用默認(rèn)值來初始化它們。默認(rèn)值根據(jù)成員變量的類型而定,例如,整型變量的默認(rèn)值是0,布爾型變量的默認(rèn)值是false,引用類型變量的默認(rèn)值是null。默認(rèn)初始化確保了對(duì)象在創(chuàng)建時(shí)每個(gè)成員變量都有一個(gè)初始值。

請(qǐng)看舉例:
深度剖析java類和對(duì)象,JavaSE_primary,java,開發(fā)語(yǔ)言,面向?qū)ο? referrerpolicy=
運(yùn)行結(jié)果如下:
深度剖析java類和對(duì)象,JavaSE_primary,java,開發(fā)語(yǔ)言,面向?qū)ο? referrerpolicy=

4.6就地初始化

就地初始化是指在創(chuàng)建對(duì)象時(shí),對(duì)成員變量進(jìn)行顯式的初始化。我們可以在對(duì)象創(chuàng)建的同時(shí)為成員變量賦予特定的值。

請(qǐng)看舉例:

public class MyClass {
	//當(dāng)然,在這里進(jìn)行就地初始化也是可以的
    private int value;
    private String str;

    // 就地初始化塊
    {
        value = 10;
        str = "Hello";
    }

    // 構(gòu)造方法1
    public MyClass() {
        // 存在就地初始化的成員變量的初始化語(yǔ)句
    }

    // 構(gòu)造方法2
    public MyClass(int value) {
        // 存在就地初始化的成員變量的初始化語(yǔ)句
        this.value = value;
    }
}

解釋
MyClass類包含一個(gè)就地初始化塊,在這個(gè)塊中對(duì)成員變量value和str進(jìn)行了初始化。在編譯期間,編譯器會(huì)將就地初始化塊的內(nèi)容添加到所有的構(gòu)造函數(shù)中(包括無(wú)參構(gòu)造函數(shù)和帶參構(gòu)造函數(shù))。
因此,無(wú)論是使用無(wú)參構(gòu)造函數(shù)還是帶參構(gòu)造函數(shù)創(chuàng)建對(duì)象,成員變量value和str都會(huì)得到就地初始化塊中指定的初始值。

所以,就地初始化后,編譯器會(huì)將所有給成員初始化的這些語(yǔ)句添加到各個(gè)構(gòu)造函數(shù)中。這樣可以確保無(wú)論使用哪個(gè)構(gòu)造函數(shù)創(chuàng)建對(duì)象,成員變量都得到了正確的初始化。

以上就是本文類和對(duì)象的全部?jī)?nèi)容。

好了,本文到這里就結(jié)束了,再見啦友友們?。?!
深度剖析java類和對(duì)象,JavaSE_primary,java,開發(fā)語(yǔ)言,面向?qū)ο? referrerpolicy=文章來源地址http://www.zghlxwxcb.cn/news/detail-685295.html

到了這里,關(guān)于深度剖析java類和對(duì)象的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【JavaSE語(yǔ)法】類和對(duì)象(一)

    【JavaSE語(yǔ)法】類和對(duì)象(一)

    1.1 什么是面向?qū)ο?Java是一門純面向?qū)ο蟮恼Z(yǔ)言(Object Oriented Program,簡(jiǎn)稱 OOP ),在面向?qū)ο蟮氖澜缋?,一切皆為?duì)象。面向?qū)ο笫墙鉀Q問題的一種思想,主要 依靠對(duì)象之間的交互完成一件事情 1.2 面向?qū)ο笈c面向過程 注意:面向過程和面相對(duì)象并不是一門語(yǔ)言,而是解決問

    2024年02月05日
    瀏覽(22)
  • 【JavaSE】基礎(chǔ)筆記 - 類和對(duì)象(上)

    【JavaSE】基礎(chǔ)筆記 - 類和對(duì)象(上)

    ? 目錄 1、面向?qū)ο蟮某醪秸J(rèn)知 1.1、什么是面向?qū)ο?1.2、面向?qū)ο笈c面向過程 ?2. 類定義和使用 2.1、簡(jiǎn)單認(rèn)識(shí)類 2.2、類的定義格式 2.3、自定義類舉例說明 2.3.1、定義一個(gè)狗類? 2.3.2、定義一個(gè)學(xué)生類 3、類的實(shí)例化 3.1、什么是實(shí)例化 3.2、類和對(duì)象的說明 ? Java是一門 純面向

    2024年02月05日
    瀏覽(24)
  • 【JavaSE】基礎(chǔ)筆記 - 類和對(duì)象(下)

    【JavaSE】基礎(chǔ)筆記 - 類和對(duì)象(下)

    ? 目錄 1、this引用 1.1、為什么要有this引用 1.2、什么是this引用 1.3、?this引用的特性 2、?對(duì)象的構(gòu)造及初始化 2.1、?如何初始化對(duì)象 2.2、構(gòu)造方法 2.2.1、概念? ?2.2.2、特性 ?2.3、默認(rèn)初始化 ?2.4、就地初始化 ? 上篇: 【JavaSE】基礎(chǔ)筆記 - 類和對(duì)象(上)-CSDN博客 https://blo

    2024年02月04日
    瀏覽(23)
  • 【javaSE】?jī)?nèi)部類(來自類和對(duì)象的補(bǔ)充)

    【javaSE】?jī)?nèi)部類(來自類和對(duì)象的補(bǔ)充)

    hellohello~,大家好????,這里是E綿綿呀???,如果覺得這篇文章還不錯(cuò)的話還請(qǐng)點(diǎn)贊????收藏??????關(guān)注????,如果發(fā)現(xiàn)這篇文章有問題的話,歡迎各位評(píng)論留言指正,大家一起加油!一起chin up!????? ?? 個(gè)人主頁(yè) :E綿綿的博客 ?? 所屬專欄: JAVASE題目練習(xí)

    2024年04月27日
    瀏覽(18)
  • JavaSE面試深度剖析 第一講

    目錄 JavaSE面試深度剖析 第一講 Java面向?qū)ο?1 面向?qū)ο蠖加心男┨匦砸约澳銓?duì)這些特性的理解 2 訪問權(quán)限修飾符 public、private、protected, 以及不寫(默認(rèn))時(shí)的區(qū)別 3 如何理解 clone 對(duì)象 ? ? ? 本文章向大家介紹JavaSE面試深度剖析 第一講,主要內(nèi)容包括其使用實(shí)例、應(yīng)用技巧

    2024年02月06日
    瀏覽(15)
  • JavaSE面試深度剖析 第二講

    目錄 JavaSE面試深度剖析 第二講 JavaSE 語(yǔ)法 ? ? 本文章向大家介紹JavaSE面試深度剖析 第二講,主要內(nèi)容包括其使用實(shí)例、應(yīng)用技巧、基本知識(shí)點(diǎn)總結(jié)和需要注意事項(xiàng),具有一定的參考價(jià)值,需要的朋友可以參考一下。 ? Java 有沒有 goto 語(yǔ)句? goto 是 Java 中的保留字,在目前版

    2024年02月05日
    瀏覽(13)
  • 【手把手帶你學(xué)JavaSE】第六篇:類和對(duì)象

    【手把手帶你學(xué)JavaSE】第六篇:類和對(duì)象

    對(duì)了!給大家推薦一個(gè)刷題學(xué)習(xí)、面試神器——??途W(wǎng) 里面有非常多的題庫(kù),跟面試經(jīng)驗(yàn)~非常的良心!! 什么是類? 什么是對(duì)象? 怎么去理解這兩個(gè)抽象的概念呢? Java是一門純面向?qū)ο蟮恼Z(yǔ)言(Object Oriented Program,繼承OOP),在面向?qū)ο蟮氖澜缋?,一切皆為?duì)象。 面向?qū)ο?/p>

    2023年04月20日
    瀏覽(90)
  • C++類和對(duì)象-多態(tài)->多態(tài)的基本語(yǔ)法、多態(tài)的原理剖析、純虛函數(shù)和抽象類、虛析構(gòu)和純虛析構(gòu)

    C++類和對(duì)象-多態(tài)->多態(tài)的基本語(yǔ)法、多態(tài)的原理剖析、純虛函數(shù)和抽象類、虛析構(gòu)和純虛析構(gòu)

    #includeiostream using namespace std; //多態(tài) //動(dòng)物類 class Animal { public: ?? ?//Speak函數(shù)就是虛函數(shù) ?? ?//函數(shù)前面加上virtual,變成虛函數(shù),那么編譯器在編譯的時(shí)候就不能確定函數(shù)調(diào)用了。 ?? ?virtual void speak() ?? ?{ ?? ??? ?cout \\\"動(dòng)物在說話\\\" endl; ?? ?} }; //貓類 class Cat

    2024年02月20日
    瀏覽(23)
  • 04-JVM對(duì)象創(chuàng)建深度剖析

    04-JVM對(duì)象創(chuàng)建深度剖析

    上一篇:03-JVM內(nèi)存模型剖析與優(yōu)化 對(duì)象創(chuàng)建的主要流程: 虛擬機(jī)遇到一條new指令時(shí),首先將去檢查這個(gè)指令的參數(shù)是否能在常量池中定位到一個(gè)類的符號(hào)引用,并且檢查這個(gè)符號(hào)引用代表的類是否已被加載、解析和初始化過。如果沒有,那必須先執(zhí)行相應(yīng)的類加載過程。 ne

    2024年02月09日
    瀏覽(22)
  • 06-JVM對(duì)象內(nèi)存回收機(jī)制深度剖析

    06-JVM對(duì)象內(nèi)存回收機(jī)制深度剖析

    上一篇:05-JVM內(nèi)存分配機(jī)制深度剖析 堆中幾乎放著所有的對(duì)象實(shí)例,對(duì)堆垃圾回收前的第一步就是要判斷哪些對(duì)象已經(jīng)死亡( 即不能再被任何途徑使用的對(duì)象 )。 給對(duì)象中添加一個(gè)引用計(jì)數(shù)器,每當(dāng)有一個(gè)地方引用它,計(jì)數(shù)器就加1;當(dāng)引用失效,計(jì)數(shù)器就減1;任何時(shí)候計(jì)

    2024年02月09日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包