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

Java 類與對(duì)象超基礎(chǔ)講解

 更新時(shí)間:2022年03月31日 18:57:23   作者:誠(chéng)摯的喬治  
類(class)和對(duì)象(object)是兩種以計(jì)算機(jī)為載體的計(jì)算機(jī)語言的合稱。對(duì)象是對(duì)客觀事物的抽象,類是對(duì)對(duì)象的抽象。類是一種抽象的數(shù)據(jù)類型

什么是面向?qū)ο?/h2>

Java語言是一個(gè)純面向?qū)ο蟮恼Z言,面向?qū)ο蟮恼Z言不僅只有Java,包括C++,PHP等

面向?qū)ο蟮木幊趟枷牒?jiǎn)稱 OOP(Object Oriented Programming),其基本特點(diǎn)就是封裝,繼承和多態(tài)。

面向過程與面向?qū)ο?/h3>

想要弄清楚什么是面向?qū)ο?,首先需要知道兩者的區(qū)別

面向過程更注重程序的每一個(gè)步驟,用相應(yīng)的函數(shù)來實(shí)現(xiàn)。

比如說,五子棋,面向過程就需要首先分析每一個(gè)步驟

1.實(shí)現(xiàn)游戲的開始

3.棋盤的搭建

4.玩家下棋,并打印新的棋盤

5.電腦下棋,并打印新的棋盤

6.判斷輸贏

7.返回并輸出結(jié)果

對(duì)于面向?qū)ο髞碚f,就需要找出相應(yīng)的對(duì)象

1.電腦與玩家

2.棋盤

3.規(guī)則設(shè)置

這三條都屬于對(duì)象,第一類對(duì)象(玩家對(duì)象)負(fù)責(zé)接受用戶輸入,并告知第二類對(duì)象(棋盤對(duì)象)棋子布局的變化,棋盤對(duì)象接收到了棋子的變化就要負(fù)責(zé)在屏幕上面顯示出這種變化,同時(shí)利用第三類對(duì)象(規(guī)則系統(tǒng))來對(duì)棋局進(jìn)行判定。

將五子棋改成圍棋,如果是面向過程的思想,就需要對(duì)多個(gè)步驟,函數(shù)進(jìn)行修改和維護(hù),而且面向過程,往往需要修改大量的代碼,因?yàn)槌绦虻拿恳粋€(gè)步驟都是相互聯(lián)系的。而面向?qū)ο?,僅僅只需要對(duì)對(duì)象進(jìn)行維護(hù),并且每一個(gè)對(duì)象之間獨(dú)立性較強(qiáng)

所以相對(duì)于面向過程,面向?qū)ο笥懈玫木S護(hù),復(fù)用,和擴(kuò)展功能

而我們的面向?qū)ο螅恍枰P(guān)注尋找對(duì)象,構(gòu)建對(duì)象,使用對(duì)象這三點(diǎn),關(guān)鍵是抽象出類出來

類與對(duì)象的使用

語法:

Java中的類是通過class關(guān)鍵字來定義的,其語法格式如下:

[修飾符] class 類名 [extends 父類名] [implements 接口名]{undefined

// 類體

}

這里的extends和implements為可選項(xiàng),類體包括成員變量(又稱為字段和屬性)和成員方法

class后面的類名采用大駝峰

成員變量定義在類當(dāng)中,方法的外面

類相當(dāng)一個(gè)模板,根據(jù)這個(gè)模板,可以創(chuàng)造很多的對(duì)象,類是對(duì)象的抽象歸納,這里的類也可以看作是一種自定義類型

下面定義一個(gè)Person類,由名字年齡構(gòu)成,成員方法為人的吃飯,睡覺等行為

class Person{
    public String name;
    public int age;
    public void eat(){
        System.out.println("吃飯");
    }
    public void sleep(){
        System.out.println("睡覺");
    }
}

在使用這個(gè)類,必須先實(shí)例化一個(gè)對(duì)象,有類才有對(duì)象

對(duì)目標(biāo)進(jìn)行訪問,首先這個(gè)目標(biāo)肯定是一個(gè)實(shí)體,只有擁有一個(gè)實(shí)例化對(duì)象,才能對(duì)對(duì)象進(jìn)行訪問和修改,就相當(dāng)于類只是一個(gè)圖紙,只有做成一個(gè)物理模型,才能對(duì)這個(gè)模型進(jìn)行修改。

那對(duì)象具體怎樣創(chuàng)建呢?這個(gè)時(shí)候就需要用過new關(guān)鍵字去構(gòu)建一個(gè)對(duì)象

Person per=new Person();

既然Person是一種自定義類型,那上述代碼,前面就是類型,后面就是變量

這里的per是一個(gè)引用變量,存放的是對(duì)象的地址,這個(gè)引用指向的就是這個(gè)對(duì)象

類與對(duì)象的使用與說明

1.類是一種自定義類型,可以用來定義變量,在java中由類定義出來的變量我們稱為成員變量

2.一個(gè)類可以定義多個(gè)變量,實(shí)例出來的對(duì)象會(huì)占用實(shí)際的物理空間,存儲(chǔ)類成員變量

3.類實(shí)例化就相當(dāng)于,生活中構(gòu)建房子,類只是一個(gè)設(shè)計(jì)圖,只設(shè)計(jì)出需要什么,但是無真是的建筑存在,只有真正實(shí)例化一個(gè)對(duì)象,才會(huì)分配儲(chǔ)存數(shù)據(jù),占用物理空間。

4.只有使用new關(guān)鍵字,才能實(shí)例化一個(gè)對(duì)象,才會(huì)分配一塊內(nèi)存

對(duì)象的初始化

當(dāng)成功創(chuàng)建一個(gè)對(duì)象后,需要對(duì)該對(duì)象進(jìn)行初始化

java中對(duì)對(duì)象進(jìn)行初始化,需要使用 “.”操作符

如果不對(duì)對(duì)象進(jìn)行初始化的話,默認(rèn)該變量中的成員變量初值為對(duì)應(yīng)相應(yīng)的零值

public class classDemo {
    public static void main(String[] args) {
        //實(shí)例化一個(gè)對(duì)象
        Person per1=new Person();
        //對(duì)per1對(duì)象進(jìn)行初始化
        per1.age=20;
        per1.name="zhangsan";
        per1.eat();
        per1.sleep();
        Person per2=new Person();
        //對(duì)per2對(duì)象進(jìn)行初始化
        per2.age=30;
        per2.name="lisi";
        per2.eat();
        per2.sleep();
    }
}

this的使用

1.this可以代表當(dāng)前對(duì)象的引用

2.可以避免成員方法參數(shù)與成員名稱沖突,將成員變量與其他參數(shù)區(qū)別開

this.data//訪問成員變量

this.fun();//訪問成員方法

this();//調(diào)用構(gòu)造方法,具體看下文構(gòu)造方法

//定義一個(gè)日期的類
public class MyDate {
 
    public int year;
    public int month;
    public int day;
 
    /**
     * 設(shè)置日期:
     */
    public void setDate(int year,int month,int day) {
        this.year = year;
        this.month = month ;
        this.day = day;
        //如果不區(qū)分,就可能出現(xiàn)
        //year = year;
        //month = month ;
        //day = day;
 
    }
 
    public void printDate() {
        System.out.println("年:"+this.year+"月:"+this.month+"日:"+this.day);
    }
 
 
    public static void main(String[] args) {
 
        // this.printDate();
 
        MyDate myDate = new MyDate();
 
        myDate.setDate(2022,3,25);
 
        myDate.printDate();
 
    }
}

構(gòu)造方法

代碼:Person per=new Person();

你是否有疑惑為什么最后一個(gè)Person后面會(huì)跟一個(gè)括號(hào)

其實(shí)一個(gè)括號(hào)代表的是調(diào)用一個(gè)無參數(shù)的構(gòu)造方法,當(dāng)你編寫的程序中,沒有構(gòu)造方法,系統(tǒng)其實(shí)就調(diào)用隱藏的無參數(shù)的構(gòu)造方法,只不過這個(gè)構(gòu)建函數(shù)無實(shí)際作用。如果程序存在構(gòu)造方法,那系統(tǒng)就不會(huì)默認(rèn)生成無參數(shù)的構(gòu)造方法

什么是構(gòu)造方法?構(gòu)造方法與普通的成員方法有什么不同?

1.構(gòu)造參數(shù)沒有返回值,即使void也不行

2.構(gòu)造方法中的方法名與該類的名字相同

構(gòu)造方法仍然支持方法重載,調(diào)用哪一個(gè)方法,由參數(shù)列表決定

this可以調(diào)用本類的構(gòu)造方法

   public Student() {
        //調(diào)用本類中   帶有2個(gè)參數(shù)的構(gòu)造方法,第一個(gè)參數(shù)的類型是String,第2個(gè)參數(shù)的類型是int
        this("gaobo",18);
    }
 
    public Student(String name,int age) {
        this.age = age;
        this.name = name;
        System.out.println("這個(gè)是帶2個(gè)參數(shù)的構(gòu)造方法!");
    }

操作可行的前提是,要保證this語句在該方法中最前面的一行,注釋除外

并且不能形成環(huán)(兩個(gè)構(gòu)造方法相互調(diào)用)

java類中支持快速打印出成員變量,不需要自己寫一個(gè)show方法來進(jìn)行打印

    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

toString方法,它通常只是為了方便輸出,比如System.out.println(xx),括號(hào)里面的“xx”如果不是String類型的話,就自動(dòng)調(diào)用xx的toString()方法,toString 方法會(huì)返回一個(gè)“以文本方式表示”此對(duì)象的字符串。

IDEA快速生成toString方法的快捷鍵:鼠標(biāo)右鍵->generate->toString

到此這篇關(guān)于Java 類與對(duì)象超基礎(chǔ)講解的文章就介紹到這了,更多相關(guān)Java 類與對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java綜合整理堆排序?快速排序?歸并排序

    Java綜合整理堆排序?快速排序?歸并排序

    堆排序是利用堆這種數(shù)據(jù)結(jié)構(gòu)而設(shè)計(jì)的一種排序算法,堆排序是一種選擇排序,它的最壞,最好,平均時(shí)間復(fù)雜度均為O(nlogn),它也是不穩(wěn)定排序。首先簡(jiǎn)單了解下堆結(jié)構(gòu)
    2022-01-01
  • @SpringBootConfiguration重復(fù)加載報(bào)錯(cuò)問題解決

    @SpringBootConfiguration重復(fù)加載報(bào)錯(cuò)問題解決

    @SpringBootApplication?注解的?exclude?屬性用于排除特定的自動(dòng)配置類,而不是用于排除主配置類本身,因此,不能通過?exclude?屬性來排除主配置類的加載,這篇文章主要介紹了@SpringBootConfiguration重復(fù)加載報(bào)錯(cuò),需要的朋友可以參考下
    2024-08-08
  • SpringBoot使用Caffeine實(shí)現(xiàn)內(nèi)存緩存示例詳解

    SpringBoot使用Caffeine實(shí)現(xiàn)內(nèi)存緩存示例詳解

    caffeine提供了四種緩存策略:分別為手動(dòng)加載、自動(dòng)加載、異步手動(dòng)加載、異步自動(dòng)加載,這篇文章主要介紹了SpringBoot使用Caffeine實(shí)現(xiàn)內(nèi)存緩存,需要的朋友可以參考下
    2023-06-06
  • RestTemplate 401 獲取錯(cuò)誤信息的處理方案

    RestTemplate 401 獲取錯(cuò)誤信息的處理方案

    這篇文章主要介紹了RestTemplate 401 獲取錯(cuò)誤信息的處理方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Springboot錯(cuò)誤頁面和錯(cuò)誤信息定制操作

    Springboot錯(cuò)誤頁面和錯(cuò)誤信息定制操作

    這篇文章主要介紹了Springboot錯(cuò)誤頁面和錯(cuò)誤信息定制操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 基于SpringBoot bootstrap.yml配置未生效的解決

    基于SpringBoot bootstrap.yml配置未生效的解決

    這篇文章主要介紹了基于SpringBoot bootstrap.yml配置未生效的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Java IO流之節(jié)點(diǎn)流與字符流的相關(guān)知識(shí)總結(jié)

    Java IO流之節(jié)點(diǎn)流與字符流的相關(guān)知識(shí)總結(jié)

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識(shí),文章圍繞著Java節(jié)點(diǎn)流與字符流展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java使用icepdf將pdf文件按頁轉(zhuǎn)成圖片

    Java使用icepdf將pdf文件按頁轉(zhuǎn)成圖片

    這篇文章主要為大家詳細(xì)介紹了Java使用icepdf將pdf文件按頁轉(zhuǎn)成圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Java IO 之文件讀寫簡(jiǎn)單實(shí)例

    Java IO 之文件讀寫簡(jiǎn)單實(shí)例

    這篇文章主要介紹了Java IO 之文件讀寫簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Java中Map.entry的具體使用

    Java中Map.entry的具體使用

    Map.Entry?是Map中的一個(gè)接口,Map.Entry里有相應(yīng)的getKey和getValue方法,讓我們能夠從一個(gè)項(xiàng)中取出Key和Value,本文就詳細(xì)的介紹一下Map.entry的具體使用,感興趣的可以了解一下
    2023-05-05

最新評(píng)論

古丈县| 宕昌县| 上虞市| 诸城市| 广饶县| 五大连池市| 嘉鱼县| 香格里拉县| 建昌县| 陵水| 河曲县| 塔城市| 蛟河市| 泾川县| 阜城县| 河北省| 金塔县| 民县| 邹城市| 巨野县| 碌曲县| 宾川县| 无棣县| 庆阳市| 旌德县| 大英县| 滨州市| 游戏| 元江| 通江县| 宁河县| 利辛县| 六枝特区| 北碚区| 启东市| 长沙市| 化德县| 南召县| 肇东市| 抚州市| 惠州市|