最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入淺出分析Java 類和對象

 更新時間:2022年03月23日 11:09:09   作者:來自爪哇的bean  
面向?qū)ο竽耸荍ava語言的核心,是程序設計的思想。Java語言的面向?qū)ο蠹夹g包括了面向?qū)ο蠛兔嫦蜻^程的基本概念,面向?qū)ο蟮奶卣?,Java語言的類,對象,修飾符,抽象類等一系列的知識點

一、什么是類

類(Class)是面向?qū)ο蟪绦蛟O計(OOP,Object-Oriented Programming)實現(xiàn)信息封裝的基礎。類是一種用戶自定義的引用數(shù)據(jù)類型,也稱類類型。每個類包含數(shù)據(jù)說明和一組操作數(shù)據(jù)或傳遞消息的函數(shù),類的實例稱為對象

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

二、Java的類和C語言的結(jié)構體異同

我們可以發(fā)現(xiàn)Java中的類其實和C語言中的結(jié)構體很像,那么他們有什么區(qū)別呢?

1.打包的對象不同

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

Java的對象可以是對數(shù)據(jù)的打包,也可以是對職責的打包

2. 存放的位置不同

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

Java的對象只能存在堆上

三、類和類的實例化

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

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

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

類的聲明

基本形式:

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

這里的 class 就是類的關鍵字

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

類中的方法:成員方法

如下示例:

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

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

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

成員方法前面不加 static

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

默認值規(guī)則: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來實例化一個對象,通過對象的引用 . 成員變量來訪問成員變量,普通方法通過對象的引用 . 方法名來調(diào)用

靜態(tài)屬性(靜態(tài)成員變量)

被定義在類的內(nèi)部,方法的外部,加static修飾

如下代碼:

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

注意: 靜態(tài)屬性仍然遵循默認值規(guī)則

如何訪問:

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

如下:

System.out.println(Dog.a);

錯誤示例:

System.out.println(dog.a);

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

注意:

  • 靜態(tài)屬性存在于方法區(qū)
  • 不管new多少個對象,靜態(tài)屬性只有一份
  • 靜態(tài)方法內(nèi)部不能夠訪問非靜態(tài)的數(shù)據(jù)成員的值,也不能調(diào)用非靜態(tài)方法
  • 靜態(tài)方法不依賴對象

四、構造方法

首先我們想想,一個對象時如何產(chǎn)生的?

  • 為對象分配內(nèi)存
  • 調(diào)用合適的構造方法

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

創(chuàng)建構造方法

  • 方法名必須和類名相同
  • 無返回值類型聲明
  • 每個類至少存在一個構造方法(沒有定義時,系統(tǒng)自動生成一個無參構造)

如下代碼:

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創(chuàng)建對象時,使用了有參構造,可以看到打印出來的結(jié)果

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

需要注意:

  • 當類中沒有構造方法的時候,系統(tǒng)會自動補一個無參構造方法,但是當你自己寫了構造方法的時候,就不會補這個無參構造,若需要用無參構造,就需要自己手動寫
  • 構造方法也支持重載

this

this的作用

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

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

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

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

到此這篇關于深入淺出分析Java 類和對象的文章就介紹到這了,更多相關Java 類和對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 解決springboot 連接 mysql 時報錯 using password: NO的方案

    解決springboot 連接 mysql 時報錯 using password: NO的方案

    在本篇文章里小編給大家整理了關于解決springboot 連接 mysql 時報錯 using password: NO的方案,有需要的朋友們可以學習下。
    2020-01-01
  • Spring Cloud Feign組成配置過程解析

    Spring Cloud Feign組成配置過程解析

    這篇文章主要介紹了Spring Cloud Feign組成配置過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • Java中Maven的打包方式和執(zhí)行jar詳解

    Java中Maven的打包方式和執(zhí)行jar詳解

    這篇文章主要介紹了Java中maven的打包方式和執(zhí)行jar,文中有詳細的代碼示例,有需要的朋友可以借鑒一下
    2023-04-04
  • 基于Java實現(xiàn)ssh命令登錄主機執(zhí)行shell命令過程解析

    基于Java實現(xiàn)ssh命令登錄主機執(zhí)行shell命令過程解析

    這篇文章主要介紹了基于Java實現(xiàn)ssh命令登錄主機執(zhí)行shell命令過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • java操作elasticsearch詳細方法總結(jié)

    java操作elasticsearch詳細方法總結(jié)

    elasticsearch是使用Java編寫的一種開源搜索引擎,也是一種分布式的搜索引擎架構,這篇文章主要給大家介紹了關于java操作elasticsearch的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • Spring Boot詳細打印啟動時異常堆棧信息詳析

    Spring Boot詳細打印啟動時異常堆棧信息詳析

    這篇文章主要給大家介紹了關于Spring Boot詳細打印啟動時異常堆棧信息的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring Boot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-10-10
  • idea編寫java程序詳細圖文步驟

    idea編寫java程序詳細圖文步驟

    這篇文章主要給大家介紹了關于idea編寫java程序的詳細圖文步驟,IDEA是用于Java語言開發(fā)的集成環(huán)境,它是業(yè)界公認的目前用于Java程序開發(fā)最好的工具,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • SpringBoot 多任務并行+線程池處理的實現(xiàn)

    SpringBoot 多任務并行+線程池處理的實現(xiàn)

    這篇文章主要介紹了SpringBoot 多任務并行+線程池處理的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • JAVA 生成隨機數(shù)并根據(jù)后臺概率靈活生成的實例代碼

    JAVA 生成隨機數(shù)并根據(jù)后臺概率靈活生成的實例代碼

    本篇文章主要介紹了JAVA 生成隨機數(shù)并根據(jù)后臺概率靈活生成的實例代碼,具有一定的參考價值,有興趣的可以了解一下
    2017-08-08
  • Spring事務失效場景原理及解決方案

    Spring事務失效場景原理及解決方案

    這篇文章主要介紹了Spring事務失效場景原理及解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09

最新評論

阿图什市| 枣强县| 盘锦市| 岑巩县| 富阳市| 兴宁市| 平利县| 甘南县| 茌平县| 疏附县| 抚顺县| 江阴市| 滕州市| 万年县| 海伦市| 呼伦贝尔市| 白玉县| 东兴市| 兖州市| 海盐县| 康保县| 工布江达县| 农安县| 青浦区| 清丰县| 泽州县| 陇川县| 合肥市| 诸城市| 光山县| 德庆县| 泊头市| 商丘市| 虞城县| 五大连池市| 合山市| 屯留县| 通渭县| 浑源县| 南京市| 青河县|