欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

千鋒扣丁學(xué)堂Java培訓(xùn)之構(gòu)造方法set/get和toString使用詳解

2019-07-01 14:50:41 1753瀏覽

今天千鋒扣丁學(xué)堂Java培訓(xùn)之Java中構(gòu)造方法set/get和toString的使用詳解,構(gòu)造函數(shù)的最大作用就是創(chuàng)建對象時完成初始化,當(dāng)我們在new一個對象并傳入?yún)?shù)的時候,會自動調(diào)用構(gòu)造函數(shù)并完成參數(shù)的初始化,下面我們一起來看一下吧。



一、構(gòu)造函數(shù)

構(gòu)造函數(shù)的最大作用就是創(chuàng)建對象時完成初始化,當(dāng)我們在new一個對象并傳入?yún)?shù)的時候,會自動調(diào)用構(gòu)造函數(shù)并完成參數(shù)的初始化。如下:

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

運行結(jié)果是“Wade”

插一句,插入構(gòu)造函數(shù)快捷鍵:alt+insert,Constructor(構(gòu)造函數(shù))



這就說明在我們創(chuàng)建Test01對象時,會自動調(diào)用構(gòu)造函數(shù)完成初始化,這時程序中的name屬性就成了Wade。上面說到構(gòu)造函數(shù)是為了在new對象傳入?yún)?shù)后完成屬性的初始化。但是,為什么我程序中不寫構(gòu)造函數(shù)依然可以完成初始化。

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

2.如果寫了構(gòu)造函數(shù),則自定義構(gòu)造函數(shù)會覆蓋無參數(shù)構(gòu)造函數(shù)。

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

所以,比較穩(wěn)妥也是較常用的方式是在java類中同時定義無參構(gòu)造函數(shù)和有參構(gòu)造函數(shù),代碼如下:

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

運行結(jié)果是“Wade,null”

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

二、set()/get()方法

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

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

現(xiàn)在以上述代碼為例,添加set/get方法

同樣使用快捷鍵:alt+insert,GetterandSetter

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

運行結(jié)果是“t:CP3,t1:Rose”

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

三、toString()方法

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

將上述代碼最后加上

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

運行結(jié)果是

全限定名@地址首地址
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;
}
//有參構(gòu)造函數(shù)
public Test01(String name) {
this.name = name;
}
//無參構(gòu)造函數(shù)
public Test01() {
}
  //重寫toString()方法,可以自定義
@Override
public String toString() {
return "Test01{" +
"name='" + name + '\'' +
'}';
}
public static void main(String[] args) {
//既可以調(diào)用有參構(gòu)造函數(shù)實例化對象
Test01 t=new Test01("Wade");
//又可以調(diào)用無參構(gòu)造函數(shù)實例化對象
Test01 t1=new Test01();
//使用set()方法給屬性賦值
t.setName("CP3");
//傳統(tǒng)方式賦值
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());
}
}

運行結(jié)果是

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

這樣就得到我們想要的信息了,這就是重寫toString()在java類中的基本用法了。

以上就是關(guān)于千鋒扣丁學(xué)堂Java培訓(xùn)之構(gòu)造方法set/get和toString使用詳解的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,希望對大家的學(xué)習(xí)有所幫助,想要了解更多關(guān)于Java開發(fā)方面內(nèi)容的小伙伴,請關(guān)注扣丁學(xué)堂Java培訓(xùn)官網(wǎng)、微信等平臺,扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育有專業(yè)的Java講師為您指導(dǎo),此外扣丁學(xué)堂老師精心推出的Java視頻教程定能讓你快速掌握J(rèn)ava從入門到精通開發(fā)實戰(zhàn)技能??鄱W(xué)堂Java技術(shù)交流群:850353792。


                        JavaEE/微服務(wù)/源碼解析/分布式/企業(yè)級架構(gòu)【VIP體驗課】


     【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】       【掃碼進(jìn)入JavaEE/微服務(wù)VIP免費公開課】  



查看更多關(guān)于“Java開發(fā)資訊”的相關(guān)文章>>

標(biāo)簽: Java培訓(xùn) Java視頻教程 Java多線程 Java面試題 Java學(xué)習(xí)視頻 Java開發(fā)

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部