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

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

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

一. 面向對象

Java 是一門面向對象的編程語言 (Object Oriented Program ,簡稱OOP),面向對象編程的核心思想是將數(shù)據(jù)(屬性)和操作數(shù)據(jù)的方法封裝成一個整體,即對象。對象之間通過信息傳遞來相互協(xié)作,從而實現(xiàn)特定的功能。

1.1 面向對象和面向過程

面向過程注重解決問題的步驟和操作,面向對象是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。

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

(1) 面向過程

?第一步:打開冰箱

第二步:將大象塞進冰箱

第三步:關上冰箱

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

(2) 面向對象

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

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

二. 類的定義和使用

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

2.1 什么是類

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

例如:學生

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

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

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

2.2 類的定義格式

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

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這個關鍵字來進行實例化

以上述的學生類示范:

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 關鍵字用于創(chuàng)建一個對象的實例 .

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

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

四. this引用 

接下來我們看看這個日期類的代碼和運行結果,讓我們帶著問題來探索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();
    }
}

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

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

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

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

4.1 this引用的作用

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

問題一:

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

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

問題二:

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

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

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

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

五. 構造方法

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

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. 沒有返回值類型,設置為 void 也不行

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

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

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

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

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

5.1 構造方法重載

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

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調用其他構造方法

. 構造方法中,可以通過 this 調用其他構造方法來簡化代碼

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(...)必須是構造方法中第一條語句

2. 構造方法之間不能互相調用形成環(huán)

5.3 默認初始化

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

結語

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

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

相關文章

  • 深入理解java中的synchronized關鍵字

    深入理解java中的synchronized關鍵字

    這篇文章主要介紹了java中的synchronized關鍵字,有需要的朋友可以參考一下
    2013-12-12
  • springboot集成redis之字典緩存詳解

    springboot集成redis之字典緩存詳解

    Redis的字典緩存是支撐其高性能的一個關鍵因素,它使得Redis能夠以極快的速度處理大量的數(shù)據(jù),這篇文章主要介紹了springboot集成redis之字典緩存,需要的朋友可以參考下
    2024-07-07
  • Java排序之冒泡排序的實現(xiàn)與優(yōu)化

    Java排序之冒泡排序的實現(xiàn)與優(yōu)化

    冒泡排序是一種簡單的交換排序。之所以叫做冒泡排序,因為我們可以把每個元素當成一個小氣泡,根據(jù)氣泡大小,一步一步移動到隊伍的一端,最后形成一定對的順序。本文將利用Java實現(xiàn)冒泡排序,并進行一定的優(yōu)化,希望對大家有所幫助
    2022-11-11
  • 列舉java語言中反射的常用方法及實例代碼

    列舉java語言中反射的常用方法及實例代碼

    反射機制指的是程序在運行時能夠獲取自身的信息。這篇文章主要介紹了列舉java語言中反射的常用方法,需要的朋友可以參考下
    2019-07-07
  • 關于MyBatisSystemException異常產(chǎn)生的原因及解決過程

    關于MyBatisSystemException異常產(chǎn)生的原因及解決過程

    文章講述了在使用MyBatis進行數(shù)據(jù)庫操作時遇到的異常及其解決過程,首先考慮了事務問題,但未解決,接著懷疑是MyBatis的一級緩存問題,關閉緩存后問題依舊存在,最終發(fā)現(xiàn)是SQL映射文件中的參數(shù)傳遞錯誤,使用了錯誤的標簽導致循環(huán)插入
    2025-01-01
  • Java中PageHelper分頁后對list操作導致分頁無效

    Java中PageHelper分頁后對list操作導致分頁無效

    在項目中使用分頁插件的時候發(fā)現(xiàn)PageHelper插件失效了,本文就來介紹一下Java中PageHelper分頁后對list操作導致分頁無效的解決方法,感興趣的可以了解一下
    2021-05-05
  • springboot接收http請求,解決參數(shù)中+號變成空格的問題

    springboot接收http請求,解決參數(shù)中+號變成空格的問題

    這篇文章主要介紹了springboot接收http請求,解決參數(shù)中+號變成空格的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 入門JDK集合之HashMap解析

    入門JDK集合之HashMap解析

    HashMap---基于哈希表的 Map 接口的實現(xiàn)。此實現(xiàn)提供所有可選的映射操作,并允許使用 null 值和 null 鍵。(除了非同步和允許使用 null 之外,HashMap 類與 Hashtable 大致相同
    2021-06-06
  • 關于Android觸摸事件分發(fā)的原理詳析

    關于Android觸摸事件分發(fā)的原理詳析

    觸摸事件分發(fā)機制一直以來都是Android中比較重要的一大塊,自定義view,各種復雜的自定義手勢交互都與觸摸事件分發(fā)機制關系密,下面這篇文章主要給大家介紹了關于Android觸摸事件分發(fā)原理的相關資料,需要的朋友可以參考下
    2022-01-01
  • Java通過Scanner了解if...else if語句

    Java通過Scanner了解if...else if語句

    這篇文章主要介紹了Java通過Scanner了解if...else if語句,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01

最新評論

获嘉县| 桐乡市| 扎鲁特旗| 华容县| 公主岭市| 丹东市| 呼图壁县| 贞丰县| 广西| 手游| 中宁县| 堆龙德庆县| 陆良县| 康定县| 淮安市| 麦盖提县| 正定县| 建始县| 定州市| 桑日县| 曲沃县| 郓城县| 故城县| 子长县| 建瓯市| 洛阳市| 临湘市| 精河县| 遂宁市| 瓮安县| 惠东县| 洮南市| 刚察县| 绥中县| 申扎县| 荔波县| 商都县| 铜梁县| 神农架林区| 海南省| 泰宁县|