中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

set/get和toString怎么在Java中使用

發布時間:2021-03-24 17:07:51 來源:億速云 閱讀:189 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關set/get和toString怎么在Java中使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

一、構造函數

構造函數的最大作用就是創建對象時完成初始化,當我們在new一個對象并傳入參數的時候,會自動調用構造函數并完成參數的初始化。如下:

public class Test01 {
  private String name;
  //有參構造函數
  public Test01(String name) {
    this.name = name;
  }
  public static void main(String[] args) {
    Test01 t=new Test01("Wade");
    System.out.println(t.name);
  }
}

運行結果是“Wade”

插一句,插入構造函數快捷鍵:alt+insert,Constructor(構造函數)

set/get和toString怎么在Java中使用

這就說明在我們創建Test01對象時,會自動調用構造函數完成初始化,這時程序中的name屬性就成了Wade。上面說到構造函數是為了在new對象傳入參數后完成屬性的初始化。但是 ,為什么我程序中不寫構造函數依然可以完成初始化。

1.如果不寫構造函數,程序會自動生成一個無參數無操作的構造函數(默認的,隱藏)。

2.如果寫了構造函數,則自定義構造函數會覆蓋無參數構造函數。

3.如果只寫了有參數的構造函數,且不存在無參數的構造函數,將不能以 new XXX(); 這樣的方式實例化對象,在實例化對象代碼中,new XXX("***"); 括號中的參數必須與構造函數的參數保持一致,否則報錯。(當然你也可以生成對象后通過他們的set、get方法進行賦值。)

所以,比較穩妥也是較常用的方式是在java類中同時定義無參構造函數和有參構造函數,代碼如下:

public class Test01 {
  private String name;
  //有參構造函數
  public Test01(String name) {
    this.name = name;
  }
  //無參構造函數
  public Test01() {
  }
  public static void main(String[] args) {
    //既可以調用有參構造函數實例化對象
    Test01 t=new Test01("Wade");
    //又可以調用有參構造函數實例化對象
    Test01 t1=new Test01();
    System.out.println(t.name+","+t1.name);
  }
}

運行結果是“Wade,null”

這樣在實際使用中會非常方便的。

二、set()/get()方法

我們先來看看set和get這兩個詞的表面意思,set是設置的意思,而get是獲取的意思,顧名思義,這兩個方法是對數據進行設置和獲取用的。

然后我們來了解一下JAVA面向對象編程中的封閉性和安全性。封閉性即對類中的域變量進行封閉操作,即用private來修飾他們,如此一來其他類則不能對該變量訪問。這樣我們就將這些變量封閉在了類內部,這樣就提高了數據的安全性,當我們想要操作這些域變量怎么辦呢?我們可以通過兩種方法,第一中即通過public方式的構造器(或稱構造函數),對象一實例化就對該變量賦值。第二種就是通過上面提到的set和get方法,這里我舉一個特定的例子,我定義一個Person類,該類中有name、age這兩個私有域變量,然后我定義setname()、getname()、setage()、getage()這四個方法,通過這四個方法來實現對name和age的操作。這樣一來,我不用直接對Person類中的域變量操作,而是通過set和get方法間接地操作這些變量,這樣就能提高域變量的安全性,同時又保證了域變量的封裝型。

現在以上述代碼為例,添加set/get方法

同樣使用快捷鍵:alt+insert,Getter and Setter

public class Test01 {
  private String name;
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  //有參構造函數
  public Test01(String name) {
    this.name = name;
  }
  //無參構造函數
  public Test01() {
  }
  public static void main(String[] args) {
    //既可以調用有參構造函數實例化對象
    Test01 t=new Test01("Wade");
    //又可以調用無參構造函數實例化對象
    Test01 t1=new Test01();
	//使用set()方法給屬性賦值
    t.setName("CP3");
	//傳統方式賦值
    t1.name="Rose";
	//使用get()方法獲取屬性值
    System.out.println("t:"+t.getName()+","+"t1:"+t1.name);
	//在同一個類中,t.getName()和t.name效果是一樣的,但如果不是同一個類,屬性是私有的,就只能使用t.getName(),set()方法也是一樣的。
  }
}

運行結果是“t:CP3,t1:Rose”

這就是java編程語言的封裝思想,希望大家好好理解。

三、toString()方法

Object類具有一個toString()方法,你創建的每個類都會繼承該方法。它返回對象的一個String表示,并且對于調試非常有幫助。然而對于默認的toString()方法往往不能滿足需求,需要覆蓋這個方法。toString()方法將對象轉換為字符串。

將上述代碼最后加上

System.out.println(t.toString());
System.out.println(t1.toString());

運行結果是

全限定名@地址首地址
Test01@6d6f6e28
Test01@135fbaa4

這是什么呢?是對象的地址值,但這不是我們需要的信息,我們想要對象的各種屬性值,所以需要重寫toString()方法。

同樣使用快捷鍵:alt+insert,toString()

public class Test01 {
  private String name;
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  //有參構造函數
  public Test01(String name) {
    this.name = name;
  }
  //無參構造函數
  public Test01() {
  }
    //重寫toString()方法,可以自定義
  @Override
  public String toString() {
    return "Test01{" +
        "name='" + name + '\'' +
        '}';
  }
  public static void main(String[] args) {
    //既可以調用有參構造函數實例化對象
    Test01 t=new Test01("Wade");
    //又可以調用無參構造函數實例化對象
    Test01 t1=new Test01();
    //使用set()方法給屬性賦值
    t.setName("CP3");
    //傳統方式賦值
    t1.name="Rose";
    //使用get()方法獲取屬性值
    System.out.println("t:"+t.getName()+","+"t1:"+t1.name);
    //在同一個類中,t.getName()和t.name效果是一樣的,但如果不是同一個類,屬性是私有的,就只能使用t.getName(),set()方法也是一樣的。
    System.out.println(t.toString());
    System.out.println(t1.toString());
  }
}

運行結果是

t:CP3,t1:Rose
Test01{name='CP3'}
Test01{name='Rose'}

看完上述內容,你們對set/get和toString怎么在Java中使用有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辰溪县| 阿瓦提县| 肃宁县| 阜城县| 防城港市| 平泉县| 石景山区| 广水市| 抚州市| 衡山县| 勃利县| 华蓥市| 安化县| 农安县| 新密市| 苗栗市| 康保县| 黑河市| 溆浦县| 台中市| 长宁区| 黔江区| 汉阴县| 孟连| 托里县| 磐石市| 和顺县| 石台县| 达孜县| 布尔津县| 多伦县| 体育| 通江县| 广东省| 武冈市| 滨海县| 汽车| 禹城市| 闻喜县| 普兰县| 平顶山市|