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

Java 類與對象重難點詳解

 更新時間:2021年11月05日 14:17:25   作者:Lockey-s  
類(class)和對象(object)是兩種以計算機為載體的計算機語言的合稱。對象是對客觀事物的抽象,類是對對象的抽象。類是一種抽象的數(shù)據(jù)類型

什么是類、對象?

因為計算機并不能像我們?nèi)诉@樣去理解世界上的東西,所以為了更好的編輯,就抽象出了類和對象。類就是把功能放在一起,然后由一個人去調(diào)用這個功能,然后再編輯對應(yīng)的功能。調(diào)用者就是對象的實現(xiàn)者

類和類的實例化

類是一類對象的統(tǒng)稱,對象就是這一類具體化的實例
創(chuàng)建類的關(guān)鍵字:class

舉例:我們坐年糕的模子就是一個類,而通過這個模子可以做出月餅。在這個例子當(dāng)中,類就是模具,年糕就是實例化的對象。一個類可以實例化很多對象。舉例:

class Person {
    public String name;
    public int age;
}
public static void main1(String[] args) {
    Person person1 = new Person();
    Person person2 = new Person();
    Person person3 = null;
}

Person 就是一個類,里面的 name 和 int 就是類的成員(字段)。這里的 person1 就是引用,指向的是后面 new 的對象,因為是引用,所以也可以指向 null 。person3 就是指向空(null)引用。person1 person2 person3 就是實例化的對象。

字段的初始化

字段就是類里面的成員。在創(chuàng)建這些成員的時候就可以初始化。例如:

class Person {
    public String name = "Lockey";
    public int age = 10;
}

這里就是創(chuàng)建的時候?qū)ζ溥M行初始化。其實并不建議直接初始化,建議在類的調(diào)用者使用的時候再初始化。如下:

class Person {
    public String name;
    public int age;
}
public static void main(String[] args) {
    Person person1 = new Person();
    person1.name = "Lockey";
    person1.age = 10;
    System.out.println(person1.name);
    System.out.println(person1.age);
}

這里就是在類的調(diào)用者里面對類的字段進行賦值,在 main 方法當(dāng)中通過引用調(diào)用。

在這里插入圖片描述

類當(dāng)中實現(xiàn)方法

就像上面的例子,如果類的調(diào)用者需要名字和年齡的時候,輸出兩行比較麻煩,類的實現(xiàn)者就可以在類內(nèi)寫一個方法,直接返回名字和年齡。示例:

class Person {
    public String name;
    public int age;
    public void print() {
        System.out.println("姓名:"+name+" 年齡:"+age);
    }
}
public static void main(String[] args) {
    Person person1 = new Person();
    person1.name = "Lockey";
    person1.age = 10;
    person1.print();
}

在這里插入圖片描述

static 靜態(tài)關(guān)鍵字

static 可以修飾方法,屬性。要注意的是:static 修飾的變量通過類名訪問。直接舉例說明:

class Person {
    public int a;
    public static int count;
}
public static void main(String[] args) {
    Person person1 = new Person();
    person1.a++;
    person1.count++;
    System.out.println(person1.a);
    System.out.println(Person.count);
    Person person2 = new Person();
    person2.a++;
    person2.count++;
    System.out.println(person2.a);
    System.out.println(person2.count);
}

在這里插入圖片描述

如圖,count 第二次輸出為 2 。這是因為 conut 是被 static 修飾的變量,被 static 修飾之后就變成了常量,就在靜態(tài)區(qū)了。所以每個引用當(dāng)中調(diào)用的 count 沒變。所以第二次改變 count 的值的時候,就變成 2 了。當(dāng) static 修飾方法的時候,無需再創(chuàng)建對象,直接拿類名調(diào)用就行了。舉例:

class Person {
    public static int count;
    public static void change() {
        count = 100;
    }
}
public static void main(String[] args) {
    Person.change();
    System.out.println(Person.count);
}

在這里插入圖片描述

通過類名的調(diào)用直接訪問 static 修飾的變量。

封裝

因為代碼實現(xiàn)的軟件很復(fù)雜,所以就出現(xiàn)了類,但是為了閱讀性更高,就出現(xiàn)了封裝。就是把一個類的內(nèi)容實現(xiàn)為只剩一個或幾個接口,方便類的調(diào)用者訪問,這樣就降低了代碼的復(fù)雜程度。

private 實現(xiàn)封裝

private 就是修飾成員變量或方法的關(guān)鍵字,被 private 修飾之后,就不能被類外的調(diào)用者訪問了。所以就可以配合 public 來實現(xiàn)對外的接口。例如:

class Person {
    private String name = "Lockey";
    private int age = 10;
    public void print() {
        System.out.println("名字是:"+name+" 年齡:"+age);
    }
}
public static void main(String[] args) {
    Person person = new Person();
    person.print();
}

在這里插入圖片描述

這里就是利用 private 封裝屬性,使其只能在類內(nèi)被訪問到。而提供的 public 接口,就讓類的調(diào)用者在類外就可以訪問到了。所以在類外直接調(diào)用 print 方法就好了。

setter 和 getter 方法

當(dāng)我們把字段(name age)設(shè)置為 private 屬性時,就無法在類外進行初始化了,所以就又出現(xiàn)了新的方法:

setter :在類外直接調(diào)用此方法,然后設(shè)置一個值。

有了 setter 就又有了 getter 方法。getter 就是獲取字段數(shù)的值。通過類外調(diào)用,將字段設(shè)置為此值。代碼示例:

class Person {
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name1) {
        name = name1;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age1) {
        age = age1;
    }
    public void print() {
        System.out.println("名字是:"+name+" 年齡:"+age);
    }
}
public static void main(String[] args) {
    Person person = new Person();
    person.setName("Lockey");
    person.getName();
    person.setAge(10);
    person.getAge();
    person.print();
}

在這里插入圖片描述

這里就是調(diào)用 getter 和 setter 方法,在類外進行訪問,因為 private 對 name 和 age 做了封裝。

構(gòu)造方法

方法名和類名是相同的,且構(gòu)造方法沒有返回值。調(diào)用完構(gòu)造方法之后,對象才會產(chǎn)生。

一個對象的產(chǎn)生:
1 為對象分配內(nèi)存。
2 調(diào)用合適的構(gòu)造方法。

class Person {
    public Person() {
        System.out.println("Person 不帶參數(shù)的構(gòu)造方法");
    }
}
public static void main(String[] args) {
    Person person = new Person();
}

在這里插入圖片描述

這里就是實例化類的對象的時候調(diào)用的構(gòu)造方法,因為我們自己寫了構(gòu)造方法,所以這里就調(diào)用我i們寫過的。就輸出了如圖所示的內(nèi)容。需要注意的是:如果沒有實現(xiàn)如何的構(gòu)造方法,編譯器會幫我們默認(rèn)生成有個不帶參數(shù)的構(gòu)造方法。也就是說,一個類,至少會有一個構(gòu)造方法。

除了上面這種構(gòu)造方法,我們還能寫帶有參數(shù)的構(gòu)造方法。例如:

class Person {
    private String name;
    public Person(String name1) {
        name = name1;
        System.out.println("Person(String) 帶一個參數(shù)的構(gòu)造方法");
    }
}
public static void main(String[] args) {
    Person person = new Person("Lockey");
}

在這里插入圖片描述

如圖:在類初始化的時候,傳入?yún)?shù) “Lockey” 在類實例化的時候就是調(diào)用有參數(shù)的構(gòu)造方法。既然能傳參數(shù),那是否可以傳多個參數(shù)呢?答案是可以的。例如:

class Person {
    private String name;
    private int age;
    public Person(String name1, int age1) {
        name = name1;
        age = age1;
        System.out.println("Person(String, int) 帶兩個參數(shù)的構(gòu)造方法");
    }
}
public static void main(String[] args) {
    Person person = new Person("Lockey",10);
}

在這里插入圖片描述

如圖,調(diào)用的就是傳了兩個參數(shù)的構(gòu)造方法。通過觀察上面的例子,我們可以發(fā)現(xiàn):構(gòu)造方法也是支持重載的。

this 關(guān)鍵字

在類當(dāng)中,this 表示當(dāng)前對象的引用(不是當(dāng)前對象),可以通過 this 來訪問類當(dāng)中的字段和方法。用 this 的話,會降低出現(xiàn) bug 的概率,并且增加代碼的可讀性。例如使用 getter 和 setter 的時候,就可以用 this ,能多用 this 就多用 this 。

class Person {
    private String name;
    private int age;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

匿名對象

匿名對象就是沒有名字的對象。

沒有引用的對象稱為匿名對象.
匿名對象只能在創(chuàng)建對象時使用.
如果一個對象只是用一次, 后面不需要用了, 可以考慮使用匿名對象.

代碼示例:

class Person {
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public void print() {
        System.out.println("名字是:"+name+" 年齡:"+age);
    }
}
public static void main(String[] args) {
    new Person("Lockey",10).print();
}

在這里插入圖片描述

匿名對象的缺點就是只能調(diào)用一次。

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

相關(guān)文章

  • Springboot整合JPA配置多數(shù)據(jù)源流程詳解

    Springboot整合JPA配置多數(shù)據(jù)源流程詳解

    這篇文章主要介紹了Springboot整合JPA配置多數(shù)據(jù)源,JPA可以通過實體類生成數(shù)據(jù)庫的表,同時自帶很多增刪改查方法,大部分sql語句不需要我們自己寫,配置完成后直接調(diào)用方法即可,很方便
    2022-11-11
  • Java使用Armitage進行滲透測試的方法

    Java使用Armitage進行滲透測試的方法

    在網(wǎng)絡(luò)安全領(lǐng)域,滲透測試是一種重要的安全評估手段,它通過模擬惡意黑客的行為來檢測目標(biāo)系統(tǒng)是否存在安全漏洞,Armitage是一個基于Java的圖形化滲透測試工具,本文將介紹如何使用Armitage進行滲透測試,需要的朋友可以參考下
    2024-12-12
  • java中使用POI生成Excel并導(dǎo)出過程

    java中使用POI生成Excel并導(dǎo)出過程

    這篇文章主要介紹了java中使用POI生成Excel并導(dǎo)出過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • JMeter配置元件詳解

    JMeter配置元件詳解

    JMeter提供了豐富的配置元件,常用的包括參數(shù)化配置元件、HTTP請求默認(rèn)值、HTTP信息頭管理器、計數(shù)器等,本文就詳細(xì)的介紹一下這些元件的使用,感興趣的可以了解一下
    2021-12-12
  • Spring?Boot?多數(shù)據(jù)源處理事務(wù)的思路詳解

    Spring?Boot?多數(shù)據(jù)源處理事務(wù)的思路詳解

    這篇文章主要介紹了Spring?Boot?多數(shù)據(jù)源如何處理事務(wù),本文單純就是技術(shù)探討,要從實際應(yīng)用中來說的話,我并不建議這樣去玩分布式事務(wù)、也不建議這樣去玩多數(shù)據(jù)源,畢竟分布式事務(wù)主要還是用在微服務(wù)場景下,對Spring?Boot?多數(shù)據(jù)源事務(wù)相關(guān)知識感興趣的朋友參考下本文
    2022-06-06
  • Java實現(xiàn)順序表的操作

    Java實現(xiàn)順序表的操作

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)順序表的基本操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • spring boot啟動時加載外部配置文件的方法

    spring boot啟動時加載外部配置文件的方法

    這篇文章主要給大家介紹了關(guān)于spring boot啟動時加載外部配置文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-02-02
  • Java8?LocalDateTime時間日期類使用實例詳解

    Java8?LocalDateTime時間日期類使用實例詳解

    本文從 LocalDateTime 類的創(chuàng)建、轉(zhuǎn)換、格式化與解析、計算與比較以及其他操作幾個方面詳細(xì)介紹了 LocalDateTime 類在 Java 8 中的使用,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • 深入了解Java虛擬機棧以及內(nèi)存模型

    深入了解Java虛擬機棧以及內(nèi)存模型

    這篇文章主要介紹了深入了解Java虛擬機棧以及內(nèi)存模型,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有很大的幫助,需要的朋友可以參考下
    2021-04-04
  • java使用Nagao算法實現(xiàn)新詞發(fā)現(xiàn)、熱門詞的挖掘

    java使用Nagao算法實現(xiàn)新詞發(fā)現(xiàn)、熱門詞的挖掘

    這篇文章主要介紹了java使用Nagao算法實現(xiàn)新詞發(fā)現(xiàn)、熱門詞的挖掘的思路和詳細(xì)代碼,需要的朋友可以參考下
    2015-07-07

最新評論

西青区| 静乐县| 游戏| 会东县| 维西| 利辛县| 马龙县| 右玉县| 南丰县| 化州市| 黎城县| 莒南县| 都匀市| 密云县| 宽甸| 格尔木市| 济南市| 田林县| 叙永县| 衡阳市| 湖州市| 满城县| 女性| 安康市| 梁山县| 望城县| 滕州市| 鱼台县| 公主岭市| 陈巴尔虎旗| 陆河县| 澄江县| 海阳市| 墨玉县| 桐乡市| 文化| 西峡县| 驻马店市| 枣强县| 新津县| 高清|