<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Java 面向?qū)ο螅ㄉ希?/h1>

          共 8601字,需瀏覽 18分鐘

           ·

          2022-08-02 21:53

          收錄更新:https://github.com/cunyu1943/JavaPark

          目錄

          • 前言

          • 類與對象

          • 屬性

          • 方法

          • 構(gòu)造方法

          • 引用

          • 總結(jié)


          前言

          學(xué)習(xí)了面向?qū)ο缶幊痰乃枷耄裉炀蛠砜纯疵嫦驅(qū)ο缶幊趟枷朐?Java 中的體現(xiàn) - 類。以及有關(guān)類的相關(guān)知識,比如屬性、方法、引用等。

          類與對象

          以我們?nèi)粘I顬槔覀儸F(xiàn)在很多人都養(yǎng)寵物,而寵物 都有一些共同狀態(tài),比如名字、毛色、年齡…… 這樣一來我們就可以設(shè)計一個叫做的東西,用來 代表寵物 這一類事物;

          public class Pet{
              // 名字
              public String name;

              // 毛色
              public String furColor;

              // 年齡
              public int age;
          }

          有了這個類之后,它就相當(dāng)于我們的一個模板,根據(jù)這個模板我們就能夠創(chuàng)建一個個具體的寵物,而這些寵物,就叫做 對象

          public class Pet{
              // 名字
              public String name;

              // 毛色
              public String furColor;

              // 年齡
              public int age;

              public static void main(String[] args){
                  // 創(chuàng)建一個對象
                  Pet dog = new Pet();
                  dog.name = "博美";
                  dog.furColor = "white";
                  dog.age = 1;

                  Pet cat = new Pet();
                  cat.name = "英短";
                  cat.furColor = "orange";
                  cat.age = 2;

              }
          }

          屬性

          每個寵物都有自己的名字、毛色和年齡等一系列狀態(tài),而這些狀態(tài)就叫做一個類的屬性。而屬性的類型既可以是基本類型(比如上述例子中的 int),也可以是引用類型(上述例子中的 String)。而在 Java 語言中,屬性的命名雖然沒有強制規(guī)定,但是一般都是有一套大家通用的命名方法,即:

          若屬性是一個單詞組成,那么一般都是小寫。

          若屬性是多個單詞組成,那么則采用駝峰法。

          關(guān)于更多的命名規(guī)定,推薦參考阿里巴巴出品的 《Java 開發(fā)手冊》,下載地址:https://github.com/cunyu1943/ebooks

          方法

          而除開屬性之后,每個對象還能夠有許多其他的功能,就像寵物都能吃東西、會叫……,那么這些他們能夠做的事情,在類里邊就可以用 方法 來進(jìn)行表示。所謂方法就是程序中最小的執(zhí)行單元,一般用于封裝重復(fù)且具有獨立功能的代碼,從而提交代碼的復(fù)用性和可維護(hù)性。

          public class Pet{
              // 名字
              public String name;

              // 毛色
              public String furColor;

              // 年齡
              public int age;

              // 吃東西對應(yīng)的方法
              public void eat(){
                  System.out.println("吃東西!");
              }

              // 吠叫對應(yīng)的方法
              public void bark(){
                  System.out.println("吠叫!");
              }
          }

          而對于方法,也有需要注意的幾點:

          1. 方法是可以有返回值的,如果要返回對應(yīng)值,則其返回值的類型要與返回值相對于,對于不需要返回值的方法,則將其返回類型設(shè)置為 void
          2. 方法是可以有參數(shù)的,我們上述例子的方法中都是不帶參數(shù)的,但如果我們有需要,就可以加上自己需要的參數(shù),但此時注意要帶上參數(shù)的類型;

          總結(jié)起來,可以分為如下四種方法:

          1. 無參無返回值
          public void methodName(){
              ……
          }
          1. 無參有返回值
          public boolean methodName(){
              ……
              return false;
          }
          1. 有參無返回值
          public void methodName(String name){
              ……
          }
          1. 有參有返回值
          public boolean methodName(String name){
              ……
              return false;
          }
          public class Pet{
              // 名字
              public String name;

              // 毛色
              public String furColor;

              // 年齡
              public int age;

              // 具有返回值的方法
              int getAge(){
                  return age;
              }

              // 帶有參數(shù)的方法
              void setAge(int age){
                  this.age = age;
              }

              // 吃東西對應(yīng)的方法
              void eat(){
                  System.out.println("吃東西!");
              }

              // 叫喚對應(yīng)的方法
              void bark(){
                  System.out.println("叫喚!");
              }
          }

          而對于方法命名的方式,也是有一定講究的。因為一般而言方法都是一個類的動作行為,所以 一般都是以動詞開頭,而如果有多個單詞組合,則除開第一個單詞全部小寫之外,后面每個單詞的第一個字母都要使用大寫

          注意到這里有個關(guān)鍵字 return,它主要用于設(shè)置方法的返回。

          如果一個方法沒有返回值,那么此時可以省略不寫,一旦書寫,那么就代表著該方法結(jié)束。比如,以下這個方法的兩種書寫方式最終效果都是一樣的。

          • return
          public void fire(){
              System.out.println("開火……");
              return;
          }
          • 不帶 return
          public void fire(){
              System.out.println("開火……");
          }

          而如果一個方法有返回值,那么此時 return 就必須寫,它表示結(jié)束方法并返回結(jié)果。

          public int sum(int num1, int num2){
              return num1 + num2;
          }

          此外,既然提到了方法,那肯定少不了重寫和重載了,下面就來看看重寫和重載之間的區(qū)別。

          1. 重寫

          所謂重寫,其實就是子類對父類中允許訪問的方法的實現(xiàn)過程進(jìn)行加工重新編寫,是面向?qū)ο缶幊讨卸鄳B(tài)性的體現(xiàn),通常發(fā)生在父類和子類之間。

          重寫時,方法的參數(shù)和返回值都不能改變。通過重寫,子類可以根據(jù)自己的需要,從而去重新定義區(qū)別于父類的行為。

          public class Hero{
              public void fight(){
                  System.out.println("戰(zhàn)斗");
              }
          }
          pubilc class Shooter extends Hero{
              @Override
              public void fight(){
                  System.out.println("遠(yuǎn)程戰(zhàn)斗");
              }
          }
          1. 重載

          而重載則是讓類以統(tǒng)一的方式來處理不同類型數(shù)據(jù)的一種方式。一個類中存在多個同名方法,但他們具有不同的參數(shù)個數(shù)或者類型。

          簡單來說,就是在 Java 的一個類中,我們可以創(chuàng)建多個相同名字的方法,但是這些方法之間的參數(shù)和返回值所不同。

          public class Calc{
              public int sum(int num1, int num2){
                  return num1 + num2;
              }

              public int sum(int num1, int num2, int num3){
                  return num1 + num2 + num3;
              }

              public double sum(double num1, double num2){
                  return num1 + num2;
              }
          }

          構(gòu)造方法

          上面我們說了實例(也就是對象)和屬性,那么當(dāng)我們創(chuàng)建一個實例的時候,通常我們想要把它的屬性也給它設(shè)置好。為了實現(xiàn)這一功能,這時候我們可以添加方法,從而達(dá)到這一目的,以上述設(shè)置寵物的年齡為例。

          // 首先創(chuàng)建一個實例
          Pet pet = new Pet();
          // 接著調(diào)用方法設(shè)置年齡
          pet.setAge(3);
          // 查看設(shè)置年齡是否成功
          System.out.println(pet.getAge());

          可以發(fā)現(xiàn)通過上述調(diào)用方法的方式是可以完成這一目的的,但假設(shè)我們需要設(shè)置的屬性很多,此時要全部設(shè)置屬性值時就需要調(diào)用許多次 setter 方法,一旦遺漏一個,則實例內(nèi)部狀態(tài)就紊亂了。那我們就想了,有沒有一種簡單點的方法,能夠讓我們在創(chuàng)建實例對象的同時就把內(nèi)部屬性初始化了呢?

          答案是:Yes!??????

          這時候我們就可以用到一類特殊的方法 - 構(gòu)造方法,以下就來看看這個構(gòu)造方法的特殊之處。

          其實在上面我們創(chuàng)建實例的時候就已經(jīng)調(diào)用了構(gòu)造方法了,只不過它是沒有帶任何參數(shù)的構(gòu)造方法。以上述動物類 Pet 為實例,我們來看看如何編寫它的構(gòu)造方法。

          public class Pet{
                  // 名字
              public String name;

              // 毛色
              public String furColor;

              // 年齡
              public int age;

              // 無參構(gòu)造方法
              public Pet(){}

              // 帶參構(gòu)造方法
              public Pet(String name, String furColor, int age){
                  this.name = name;
                  this.furColor = furColor;
                  this.age = age;
              }
          }

          以上我們只是給出了無參的構(gòu)造方法和帶了所有屬性的構(gòu)造方法,除了上面的兩個構(gòu)造方法之外,我們還可以根據(jù)需要創(chuàng)建帶有部分屬性的構(gòu)造方法。可以看到,相比于普通的方法,構(gòu)造方法有著明顯的特點:

          1. 沒有返回值:是的,無論是帶參還是不帶參的構(gòu)造函數(shù),它們都是沒有返回值的,而它也是 每個類默認(rèn)的構(gòu)造方法
          2. 方法名同類名一樣:必須確保構(gòu)造方法的名字和類名一致,否則它就不是構(gòu)造方法了;

          有了構(gòu)造方法之后,我們創(chuàng)建實例時就可以直接給它初始化了,而不用再去麻煩地調(diào)用各個 setter 方法來初始化實例。

          // 調(diào)用無參構(gòu)造方法
          Pet pet1 = new Pet();
          // 調(diào)用有參構(gòu)造方法
          Pet pet2 = new Pet("柯基""黃色"1);

          ?? Tips:對于實例的屬性值,在未經(jīng)構(gòu)造方法初始化時,各數(shù)據(jù)類型都有默認(rèn)值,整型默認(rèn)值為 0,浮點型默認(rèn)值為 0.0,布爾類型默認(rèn)值為 false,引用類型默認(rèn)值為 null

          引用

          既然知道了什么是面向?qū)ο笠约懊嫦驅(qū)ο笾械囊恍╆P(guān)鍵知識點如對象、屬性、方法的概念,那我們就趁熱來看看啥是引用。

          所謂引用,其實在之前學(xué)習(xí)的時候就已經(jīng)涉及到了。你是否還記得 String 這個特殊的數(shù)據(jù)類型,其實在我們創(chuàng)建一個 String 對象時,也就創(chuàng)建了一個引用。

          String str = new String("村雨遙");

          其中 str 既是一個變量,也是一個引用,指向一個值為 "村雨遙"String 對象,后續(xù)如果我們要訪問這個 String 對象,就需要使用 str 這個引用來代表它。

          以上我們說的是一個引用指向一個對象,但是我們也可以用多個引用指向同一個對象。就好比你家買了一輛車,不僅你可以開,你老婆也可以開,你爸媽也可以開。而這時候的車就好比一個“對象”,而使用它的人就是多個“引用”。

          // 對象 1
          String str1 = new String("村雨遙");
          // 對象 2
          String str2 = str1;
          // 對象 3
          String str3 = str1;

          總結(jié)

          XDM,今天的內(nèi)容就到此結(jié)束了。主要對面向?qū)ο笾械念悺ο蟆傩浴⒎椒ā?gòu)造方法以及引用做了介紹,關(guān)于更多面向?qū)ο蟮闹R,我們下一篇文章中再見!

          - END -
          瀏覽 40
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報

          評論
          圖片
          表情
          推薦
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  自拍偷拍系列 | 豆花视频操逼 | 加勒比无码在线播放 | 学生妹一级a片免费看 | 4438无码 |