溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java類和對象的示例分析

發布時間:2022-03-23 14:04:25 來源:億速云 閱讀:177 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關Java類和對象的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

一、什么是類

類(Class)是面向對象程序設計(OOP,Object-Oriented Programming)實現信息封裝的基礎。類是一種用戶自定義的引用數據類型,也稱類類型。每個類包含數據說明和一組操作數據或傳遞消息的函數,類的實例稱為對象

類的實質是一種引用數據類型,類似于 byte,short,int,char,long, float, double等基本數據類型,不同的是它是一種復雜的數據類型。因為它的本質是數據類型,而不是數據,所以不存在于內存中,不能被直接操作,只有被實例化為對象時,才會變得可操作。

二、Java的類和C語言的結構體異同

我們可以發現Java中的類其實和C語言中的結構體很像,那么他們有什么區別呢?

1.打包的對象不同

C 語言的結構體是對數據的打包。把一堆概念上相互關聯的數據打包到一起,方便整體處理。外界可以隨意讀寫這些數據

Java的對象可以是對數據的打包,也可以是對職責的打包

2. 存放的位置不同

C 語言的結構體可以存放在棧上,也可以存在堆上

Java的對象只能存在堆上

三、類和類的實例化

類的成員可以包含以下:字段、方法、代碼塊、內部類和接口等

可以形象的理解為類是一個模板,類的實例化就是通過這個模板來創建對象(一個模板可以創建無數的對象)

聲明一個類其實就相當于是在自定義一種新的類型,引用類型

類的聲明

基本形式:

class 類名 {
字段(成員變量/屬性);
方法(成員方法);
}

這里的 class 就是類的關鍵字

類中的元素:屬性(在類里面,方法的外面)

類中的方法:成員方法

如下示例:

public class Dog {
    public String name;
    public int age;
    public void bark() {
        System.out.println("汪汪");
    }
}

通過以上代碼這就創建了一個狗這個類,有姓名和年齡兩個屬性,行為就是叫

屬性前面的public是訪問修飾符

成員方法前面不加 static

實例化的對象,成員遵循默認值規則

默認值規則:0 的變形

特殊的:

引用類型:null         

boolean:false     

char:'\u0000' (空字符)

類的實例化

class Dog {
    public String name;
    public int age;
    public boolean are;
    public static int a;
    public void bark() {
        System.out.println("汪汪");
    }
}
 
public class Practice {
    public static void main(String[] args) {
        Dog dog = new Dog();   // 實例化一個對象
        System.out.println(dog.are);   // 通過.來訪問
    }
}

這里通過new來實例化一個對象,通過對象的引用 . 成員變量來訪問成員變量,普通方法通過對象的引用 . 方法名來調用

靜態屬性(靜態成員變量)

被定義在類的內部,方法的外部,加static修飾

如下代碼:

class Dog {
    public String name;
    public int age;
    public boolean are;
    public static int a;    // 靜態屬性
    public void bark() {
        System.out.println("汪汪");
    }
}

注意: 靜態屬性仍然遵循默認值規則

如何訪問:

需要知道靜態成員變量并不屬于對象,而是屬于類,所以我們不能通過對象的引用 . 成員變量去訪問,而是 類名 . 靜態屬性 去訪問,靜態方法通過類名來訪問

如下:

System.out.println(Dog.a);

錯誤示例:

System.out.println(dog.a);

訪問類的靜態屬性不需要有對象,直接就可以訪問

注意:

  • 靜態屬性存在于方法區

  • 不管new多少個對象,靜態屬性只有一份

  • 靜態方法內部不能夠訪問非靜態的數據成員的值,也不能調用非靜態方法

  • 靜態方法不依賴對象

四、構造方法

首先我們想想,一個對象時如何產生的?

  • 為對象分配內存

  • 調用合適的構造方法

在我們使用new來實例化對象時,構造方法會被自動調用,完成初始化操作

創建構造方法

  • 方法名必須和類名相同

  • 無返回值類型聲明

  • 每個類至少存在一個構造方法(沒有定義時,系統自動生成一個無參構造)

如下代碼:

class Dog {
    public String name;
    public int age;
    public boolean are;
    public static int a;
    public Dog() {
 
    }
    public Dog(String name) {
        this.name = name;
    }
    public void bark() {
        System.out.println("汪汪");
    }
}
 
public class Practice {
    public static void main(String[] args) {
        Dog dog = new Dog("旺財");
        System.out.println(dog.name);
    }
}

在這段代碼中有Dog這個類,里面共有兩個構造方法,一個無參構造,一個有參構造,在通過new創建對象時,使用了有參構造,可以看到打印出來的結果

Java類和對象的示例分析

所以其實也就能看出來,到底調用哪個構造方法,取決于new時傳的參數

需要注意:

  • 當類中沒有構造方法的時候,系統會自動補一個無參構造方法,但是當你自己寫了構造方法的時候,就不會補這個無參構造,若需要用無參構造,就需要自己手動寫

  • 構造方法也支持重載

this

this的作用

在很多情況下,可能都會有人誤以為 this 是當前對象,但其實 this 是當前對象的引用

為什么this不是對象,而是引用:

我們要知道,構造方法是用來創建對象的,那么在調用構造方法創建對象的過程中,這個對象還是不存在的,哪來的對象之說

因此我們可以通過this去訪問屬性、成員方法、構造方法(調用構造方法時,只能放在第一行,只能在構造方法里面寫,只能用一次)

感謝各位的閱讀!關于“Java類和對象的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女