欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JAVA新手學習篇之類和對象詳解

 更新時間:2024年10月26日 09:31:14   作者:愛編程的小新☆  
這篇文章主要給大家介紹了關(guān)于JAVA新手學習篇之類和對象的相關(guān)資料,Java是面向?qū)ο蟮木幊陶Z言,主旨在于通過對象封裝屬性和方法實現(xiàn)功能,面向?qū)ο笈c面向過程的區(qū)別在于關(guān)注點的不同,需要的朋友可以參考下

一. 面向?qū)ο?/h2>

Java 是一門面向?qū)ο蟮木幊陶Z言 (Object Oriented Program ,簡稱OOP),面向?qū)ο缶幊痰暮诵乃枷胧菍?shù)據(jù)(屬性)和操作數(shù)據(jù)的方法封裝成一個整體,即對象。對象之間通過信息傳遞來相互協(xié)作,從而實現(xiàn)特定的功能。

1.1 面向?qū)ο蠛兔嫦蜻^程

面向過程注重解決問題的步驟和操作,面向?qū)ο笫前褬?gòu)成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。

舉例說明:將大象裝進冰箱

(1) 面向過程

?第一步:打開冰箱

第二步:將大象塞進冰箱

第三步:關(guān)上冰箱

那么以上三個步驟就是就是把大象塞進冰箱的過程,我們注重這一件事的過程,那么這種解決問題的方法我們就叫做面向過程。

(2) 面向?qū)ο?/strong>

?那么此時只有人、大象、冰箱三個對象,將大象裝進冰箱的整個過程是:人、大象、冰箱三個對象之間交互完成的,我們不需要關(guān)心大象是如何被裝進冰箱的,那么這種不關(guān)注過程,通過對象之間的交互完成的解決問題的方式我們叫做面向?qū)ο蟆?/p>

注意:面向過程和面相對象并不是一門語言,而是解決問題的方法,沒有那個好壞之分,都有其專門的應用場景。

二. 類的定義和使用

什么是類呢?我們一起來簡單認識一下

2.1 什么是類

類就是用來對一個對象進行描述的,主要描述該對象有哪些屬性,哪些功能等

例如:學生

屬性:年齡、姓名、性別......

行為:上學、吃飯、考試......

 那么我們知道了類的作用,那么該如何定義類呢?

2.2 類的定義格式

在JAVA中定義類的時候需要用到class關(guān)鍵字,語法格式如下:

class ClassName {    //ClassName表示類的名稱

        field;       //表示成員變量(屬性)

        method;      //表示行為或者成員方法
}

 那么我們來創(chuàng)建一個上述提到的學生類:

public class Student {
    public String name;//學生姓名
    public int age ;//學生年齡
    public int score ;//學生成績

    public void eat()
    {
        System.out.println("正在吃飯......");
    }

    public void exam()
    {
        System.out.println("正在考試......");
    }
    
}

那么一個簡單的學生類就創(chuàng)建好了,里面描述了學生的屬性和行為。

定義類的注意事項:

1. 類型采用大駝峰定義

2.成員前寫法統(tǒng)一為public ,后面會介紹其他的訪問修飾限定符

 三. 類的實例化

通過上述描述我們知道 類 只是用來對一個實體進行描述的,通過實例化才能夠創(chuàng)造出對象,那么在JAVA中我們該如何實例化出一個對象呢?這時候就要用到new這個關(guān)鍵字來進行實例化

以上述的學生類示范:

public class Student {
    public String name;//學生姓名
    public int age ;//學生年齡
    public int score ;//學生成績

    public void eat()
    {
        System.out.println(name+"正在吃飯......");
    }

    public void exam()
    {
        System.out.println(name+"正在考試......");
    }
    
    public static void main(String[] args) {
        Student student1=new Student();
        student1.name="張三";
        student1.age=10;
        student1.score=99;
        student1.eat();
        student1.exam();
    }
}?

 類實例化的注意事項:

1. new 關(guān)鍵字用于創(chuàng)建一個對象的實例 .

2. 使用 . 來訪問對象中的屬性和方法 .

3. 同一個類可以創(chuàng)建多個實例對象

四. this引用 

接下來我們看看這個日期類的代碼和運行結(jié)果,讓我們帶著問題來探索this的用法。

public class Day {
    public int year;
    public int month;
    public int day;
    public void setDay(int year, int month, int day){
        year = year;
        month = month;
        day = day;
    }
    public void printDay(){
        System.out.println(year + "/" + month + "/" + day);
    }

    public static void main(String[] args) {
        Day d1 = new Day();
        Day d2 = new Day();
        Day d3 = new Day();
        d1.setDay(2020,9,15);
        d2.setDay(2020,9,16);
        d3.setDay(2020,9,17);
        d1.printDay();
        d2.printDay();
        d3.printDay();
    }
}

 通過運行結(jié)果可以看見,我們明明利用setDay方法d1、d2、d3都進行的賦值,那么打印出來的結(jié)果為什么還是0/0/0呢?

第一個問題:形參名與成員變量名相同時,形參究竟是給成員變量賦值呢還是形參自己對自己賦值呢?

第二個問題:此時我們的d1、d2、d3都在調(diào)用printDay方法,該方法是如何知道打印的是哪個對象的數(shù)據(jù)呢?

那么帶著這兩個問題,我們一起來探索一下this的用法。

4.1 this引用的作用

this 引用指向當前對象 ( 成員方法運行時調(diào)用該成員方法的對象),那么我們來看一下this是怎么解決上述問題的:

問題一:

public void setDay(int year, int month, int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }

通過運行結(jié)果可以看見此時的結(jié)果是正確的,這是因為之前的代碼中沒有加上this引用,那時的賦值操作是 形參自己對自己進行賦值,成員變量的值還是默認值。而此時我們加上了this引用,那么此時帶this引用的year、month、day就是當前類的成員變量, 此時的賦值操作就是形參對成員變量進行賦值。

問題二:

public void printDay(){
        System.out.println(this.year + "/" + this.month + "/" + this.day);
    }

 printDay方法通過this引用就能夠知道打印的是當前對象的數(shù)據(jù)。

 總結(jié):        1. 當形參名和成員變量名字相同時,通過this引用表示該變量是當前類的成員變量

        2. this是“成員方法”第一個隱藏的參數(shù),編譯器會自動傳遞,在成員方法執(zhí)行時,編譯器會負責將調(diào)用成員方法對象的引用傳遞給該成員方法,this負責來接收。

五. 構(gòu)造方法

構(gòu)造方法是一個特殊的成員方法,方法名必須與類名相同,構(gòu)造方法可以直接給成員變量進行初始化

public class Day {
    public int year;
    public int month;
    public int day;
    
    public Day(int year,int month,int day)
    {
        this.year=year;
        this.month=month;
        this.day=day;
    }
    
    public void printDay(){
        System.out.println(year + "/" + month + "/" +day);
    }

    public static void main(String[] args) {
        Day d1=new Day(2024,10,10);
        d1.printDay();
    }
}

 注意事項:

1. 名字必須與類名相同

2. 沒有返回值類型,設(shè)置為 void 也不行

3. 創(chuàng)建對象時由編譯器自動調(diào)用,并且在對象的生命周期內(nèi)只調(diào)用一次

4. 如果不寫構(gòu)造方法,編譯器會主動添加一個不帶參數(shù)的構(gòu)造方法

public class Day {
    public int year;
    public int month;
    public int day;

    public Day()
    {
        
        ......
    }
    public void printDay(){
        System.out.println(year + "/" + month + "/" +day);
    }
}

 那么如果我們自己寫了一個構(gòu)造方法,那么編譯器就不會自動生成構(gòu)造方法,正所謂救急不救窮。

5.1 構(gòu)造方法重載

我們可以定義多個不同參數(shù)的構(gòu)造方法,這樣就實現(xiàn)了構(gòu)造方法的重載,方便用于多種情況

public class Day {
    public int year;
    public int month;
    public int day;

    public Day()
    {
        
    }
    
    public Day(int year,int month,int day)
    {
        this.year=year;
        this.month=month;
        this.day=day;
    }
    
    public void printDay(){
        System.out.println(year + "/" + month + "/" +day);
    }
}

5.2 通過this調(diào)用其他構(gòu)造方法

. 構(gòu)造方法中,可以通過 this 調(diào)用其他構(gòu)造方法來簡化代碼

public class Day {
    public int year;
    public int month;
    public int day;

    public Day()
    {
        this(2020,10,31);
    }

    public Day(int year,int month,int day)
    {
        this.year=year;
        this.month=month;
        this.day=day;
    }

    public void printDay(){
        System.out.println(year + "/" + month + "/" +day);
    }

    public static void main(String[] args) {
        Day d1=new Day();
        d1.printDay();
    }
}

注意事項:

1. this(...)必須是構(gòu)造方法中第一條語句

2. 構(gòu)造方法之間不能互相調(diào)用形成環(huán)

5.3 默認初始化

在使用局部變量之前是必須進行初始化的,否則會進行報錯。但是使用成員變量時,可以不進行初始化,當我們實例化一個對象后,對象空間被申請好之后,對象中包含的成員其實已經(jīng)設(shè)置好了初始值。

結(jié)語

以上就是部分類和對象的內(nèi)容,希望大家看完本篇后能夠理解類和對象的概念,在此小新感謝大家的觀看?。?!

到此這篇關(guān)于JAVA新手學習篇之類和對象詳解的文章就介紹到這了,更多相關(guān)JAVA類和對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java序列化原理詳解

    Java序列化原理詳解

    這篇文章主要介紹了Java序列化原理詳解,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-06-06
  • 使用Java解析JSON數(shù)據(jù)并提取特定字段的實現(xiàn)步驟(以提取mailNo為例)

    使用Java解析JSON數(shù)據(jù)并提取特定字段的實現(xiàn)步驟(以提取mailNo為例)

    在現(xiàn)代軟件開發(fā)中,處理JSON數(shù)據(jù)是一項非常常見的任務,無論是從API接口獲取數(shù)據(jù),還是將數(shù)據(jù)存儲為JSON格式,解析和提取JSON中的特定字段都是開發(fā)人員需要掌握的基本技能,本文將以一個實際案例為例,詳細介紹如何使用Java解析JSON數(shù)據(jù)并提取其中的mailNo字段
    2025-01-01
  • SpringBoot實現(xiàn)單文件與多文件上傳功能

    SpringBoot實現(xiàn)單文件與多文件上傳功能

    這篇文章主要介紹了SpringBoot實現(xiàn)單文件與多文件上傳功能,Spring?MVC對文件上傳做了簡化,而在Spring?Boot中對此做了更進一步的簡化,文件上傳變得更為方便,下面開始演示,需要的小伙伴可以參考一下,希望對你有所幫助
    2022-01-01
  • Java樹形菜單的創(chuàng)建

    Java樹形菜單的創(chuàng)建

    這篇文章主要為大家詳細介紹了Java圖形用戶界面中樹形菜單的創(chuàng)建樹形菜單的創(chuàng)建,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-10-10
  • Java Red5服務器實現(xiàn)流媒體視頻播放

    Java Red5服務器實現(xiàn)流媒體視頻播放

    這篇文章主要介紹了Java Red5服務器實現(xiàn)流媒體視頻播放,對視頻播放感興趣的同學,可以參考下
    2021-04-04
  • Elasticsearch?Analyzer?內(nèi)置分詞器使用示例詳解

    Elasticsearch?Analyzer?內(nèi)置分詞器使用示例詳解

    這篇文章主要為大家介紹了Elasticsearch?Analyzer?內(nèi)置分詞器使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 關(guān)于java中可變長參數(shù)的定義及使用方法詳解

    關(guān)于java中可變長參數(shù)的定義及使用方法詳解

    下面小編就為大家?guī)硪黄P(guān)于java中可變長參數(shù)的定義及使用方法詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 詳解Log4j 日志文件存放位置設(shè)置

    詳解Log4j 日志文件存放位置設(shè)置

    這篇文章主要介紹了詳解Log4j 日志文件存放位置設(shè)置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • 純Java實現(xiàn)數(shù)字證書生成簽名的簡單實例

    純Java實現(xiàn)數(shù)字證書生成簽名的簡單實例

    下面小編就為大家?guī)硪黄僇ava實現(xiàn)數(shù)字證書生成簽名的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • Java集合快速失敗與安全失敗解析

    Java集合快速失敗與安全失敗解析

    這篇文章主要介紹了Java集合快速失敗與安全失敗解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11

最新評論