知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
Java中的構(gòu)造方法(構(gòu)造函數(shù))與普通方法區(qū)別
發(fā)表時(shí)間:2020-10-19
發(fā)布人:葵宇科技
瀏覽次數(shù):33
**
Java中的構(gòu)造辦法(構(gòu)造函數(shù))與通俗辦法差別
**
一、明白什么是構(gòu)造辦法,什么是通俗辦法?
所謂的構(gòu)造辦法,是一種特別的辦法,其感化是用來創(chuàng)建對(duì)象時(shí)初始化對(duì)象,即為對(duì)象成員變量賦初始值,老是與new運(yùn)算符一路應(yīng)用在創(chuàng)建對(duì)象的語句中。特其余,一個(gè)類是可以有多個(gè)構(gòu)造函數(shù),可以根據(jù)參數(shù)個(gè)數(shù)的不合或者參數(shù)類型的不合來區(qū)分它們,即為構(gòu)造函數(shù)的重載。
構(gòu)造辦法是類的一個(gè)特別的成員,在類實(shí)例化時(shí)會(huì)主動(dòng)調(diào)用,其構(gòu)造辦法定義格局如下:
潤飾符 辦法名(){}
個(gè)中須要留意的是:
- 辦法名郵攀類名雷同;
- 沒有返回值類型;
- 沒有具體的返回值。
例如接下來這個(gè)例子,在創(chuàng)建對(duì)象的時(shí)刻,對(duì)象成員可以由構(gòu)造函數(shù)辦法進(jìn)行初始化。
new對(duì)象時(shí),都是用構(gòu)造辦法進(jìn)行實(shí)例化的;
例如;Test test = new Test("a");
//Test("a");個(gè)中這個(gè)就是構(gòu)造函數(shù),“a”為構(gòu)造辦法的形參;
而通俗辦法是簡(jiǎn)單來說就是完成特定功能的代碼塊。其定義的格局如下:
潤飾符 返回值類型 辦法名 (參數(shù)類型 參數(shù)名1,參數(shù)類型 參數(shù)名2,…)
{
函數(shù)體;
return 返回值;
}
個(gè)中:返回值類型用于限制返回值的數(shù)據(jù)類型。
二、 明白構(gòu)造辦法和通俗辦法的特點(diǎn)和感化是什么?
1. 構(gòu)造辦法的特點(diǎn):
①構(gòu)造函數(shù)的重要感化是完查對(duì)象的初始化工作,(如不雅寫的類瑯綾擎沒有構(gòu)造函數(shù),那么編譯器會(huì)默認(rèn)加上一個(gè)無參數(shù)且辦法體為空的構(gòu)造函數(shù)).它可以或許把定義對(duì)象時(shí)的參數(shù)傳給對(duì)象的域。意即當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),這個(gè)對(duì)象就被初始化.如不雅這時(shí)構(gòu)造函數(shù)不為空,則會(huì)在創(chuàng)建對(duì)象時(shí)就履行構(gòu)造函數(shù)瑯綾擎的代碼:
② 構(gòu)造函數(shù)的名稱必須郵攀類名雷同,包含大年夜小寫。
③ 構(gòu)造函數(shù)沒有返回值的,也不克不及用void來進(jìn)行潤飾。如不雅不當(dāng)心給構(gòu)造函數(shù)添加了返回類型,那么這將使這個(gè)構(gòu)造函數(shù)變成一個(gè)通俗辦法了,則在運(yùn)行時(shí)將產(chǎn)生找不到構(gòu)造辦法的缺點(diǎn)。
④一個(gè)類可以定義多個(gè)構(gòu)造辦法,如不雅在定義類時(shí)定義構(gòu)造辦法,則編譯體系會(huì)主動(dòng)插入一個(gè)無參數(shù)的默認(rèn)構(gòu)造器,這個(gè)構(gòu)造器不履行任何代碼。
⑥構(gòu)造辦法可以重載,以參數(shù)的個(gè)數(shù),類型,次序來重載。例如:
public static void main(String[] args) {
Phone p1 = new Phone();
p1.show();
System.out.println("----------------");
Phone p2 = new Phone("vivoxplay5",2999);
p2.show();
}
}
class Phone{
private String brand; //品牌
private int price; //價(jià)格
//無參構(gòu)造辦法
public Phone(){
System.out.println("無參構(gòu)造");
}
//有參構(gòu)造器
public Phone(String brand, int price) {
this.brand = brand;
this.price = price;
System.out.println("有參構(gòu)造");
}
public void show(){
System.out.println(brand+"..."+price);
}
}
構(gòu)造辦法給成員變量賦值的兩種方法的差別:
/**
* 無參構(gòu)造辦法:給屬性進(jìn)行初始化
* set/get辦法:修改屬性值
* @param args
*/
public static void main(String[] args) {
//無參構(gòu)造創(chuàng)建對(duì)象
Phone p1 = new Phone();
p1.setBrand("vivoxplay5");
p1.setPrice(2999);
p1.setBrand("vivo");
p1.show();
System.out.println("----------------");
//有參構(gòu)造創(chuàng)建對(duì)象
Phone p2 = new Phone("vivoxplay5",2999);
//這種方法并不是改名,而是將原對(duì)象變成垃圾
//p2 = new Phone("vivo",2000);
p2.show();
}
}
class Phone{
private String brand; //品牌
private int price; //價(jià)格
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
//無參構(gòu)造辦法
public Phone(){
System.out.println("無參構(gòu)造");
}
//有參構(gòu)造器
public Phone(String brand, int price) {
this.brand = brand;
this.price = price;
System.out.println("有參構(gòu)造");
}
public void show(){
System.out.println(brand+"..."+price);
}
}
2. 構(gòu)造辦法的感化:
【1】 起首,構(gòu)造函數(shù)用來生成并初始化對(duì)象;
【2】其次,構(gòu)造函數(shù)可以經(jīng)由過程函數(shù)的重寫給對(duì)象賦初始值,簡(jiǎn)化代碼,例如:
在這段代碼中,本文創(chuàng)建了兩個(gè)Person對(duì)象,分別賦給了初始值,然則如不雅創(chuàng)建的對(duì)象比較多的話,代碼就顯得很反復(fù),這時(shí)可以重載Person類瑯綾擎的構(gòu)造辦法,以在創(chuàng)建對(duì)象的時(shí)刻就賦給它們初始值,如許就可以省去反復(fù)的代碼了:
在這里有一個(gè)問題須要特其余留意:在默認(rèn)的情況下,一個(gè)類會(huì)有一個(gè)默認(rèn)的構(gòu)造函數(shù),這個(gè)構(gòu)造函數(shù)沒有內(nèi)容也沒有返回值,一般會(huì)省略。在這種情況下,編譯器在編譯的時(shí)刻會(huì)默認(rèn)加上一個(gè)無參且辦法體為空的函數(shù)。然則,如不雅類的構(gòu)造函數(shù)被重寫了,如上述的例子,Person類已經(jīng)有了一個(gè)有參數(shù)有辦法體的構(gòu)造函數(shù),這是編譯器就不會(huì)再給它默認(rèn)加上一個(gè)無參且辦法體為空的構(gòu)造函數(shù),可以懂得為無參的構(gòu)造函數(shù)被覆蓋了,這種情況稱為沒有默認(rèn)構(gòu)造函數(shù)。
而在函數(shù)的持續(xù)里,子類必須調(diào)用父類的構(gòu)造函數(shù)。然則子類只能持續(xù)父類的默認(rèn)的構(gòu)造函數(shù),如不雅父類沒有默認(rèn)的構(gòu)造函數(shù),那么子類不克不及大年夜父類持續(xù)默認(rèn)構(gòu)造函數(shù),這是子類必須應(yīng)用super來實(shí)現(xiàn)對(duì)父類的非默認(rèn)構(gòu)造函數(shù)的調(diào)用。是以,在創(chuàng)建對(duì)象的時(shí)刻,須要先應(yīng)用super來調(diào)用父類的默認(rèn)的構(gòu)造函數(shù)來對(duì)對(duì)象進(jìn)行初始化,然后調(diào)用子類本身定義的構(gòu)造函數(shù)。
3.通俗辦法的特點(diǎn)與感化
【1】通俗辦法的特點(diǎn):
① 辦法是解決一類問題的步調(diào)的有序組合;
②一個(gè)辦法必須屬于某一個(gè)類的,自力于類的辦法不存在的;
③Java的通俗辦法可以操作調(diào)用它從屬的對(duì)象和參數(shù)列表中的參數(shù);
④通俗辦法的調(diào)用方法為:對(duì)象.辦法名(參數(shù)),如接下來的代碼為例:
public void driverCar (int a,double b) {
speed= 50;
direction= "南邊";
}
⑤Java辦法只能有一個(gè)返回值,然則“值”的情勢(shì)具有多樣性
【2】感化:
完成特定功能的代碼塊,即根據(jù)本身項(xiàng)目標(biāo)須要,進(jìn)行本身編碼完成項(xiàng)目所須要的功能。
三、明白構(gòu)造辦法和通俗辦法的調(diào)用方法是如何調(diào)用的?
1)構(gòu)造辦法的調(diào)用方法
構(gòu)造辦法分為:無參構(gòu)造辦法和有參構(gòu)造辦法
A. 無參構(gòu)造辦法:
public class Student{
public Student(){ //無參構(gòu)造辦法
System.out.println("無參辦法被調(diào)用");
}
}
public class Test {
public static void main (String[] args){
Student stu = new Student(); //實(shí)例化Student對(duì)象
}
}//該辦法是無參的構(gòu)造辦法,即構(gòu)造辦法不接收參數(shù),履行后輸出即可,無參的構(gòu)造辦法被調(diào)用。
B. 有參構(gòu)造辦法
為一個(gè)屬性賦值有兩種辦法: ①直接拜訪對(duì)象屬性;②經(jīng)由過程setXxx()辦法。
如不雅想在實(shí)例化對(duì)象的同時(shí)就為了對(duì)象的屬性進(jìn)行賦值,可以經(jīng)由過程帶參數(shù)的構(gòu)造辦法來實(shí)現(xiàn)
public class Student{
private String name;
private int age;
public Student(String name,int age){ //有參構(gòu)造辦法
this.name = name;
this.age = age ;
}
public void show (){
System.out.println("姓名:"+name+"年紀(jì):"+age);
}
}
public class Test02(){
public static void main (String[] args)
{
Student stu = new Student("王小五",25); //實(shí)例化對(duì)象的同時(shí)賦值
stu.show();
}
}
2)通俗辦法的調(diào)用方法
通俗辦法分為 : 有明白返回值的辦法和沒有明白返回值的辦法
A. 有明白返回值的辦法的調(diào)用
可以零丁調(diào)用(無意義),輸出調(diào)用,賦值調(diào)用(推薦)。
public static int sum (int a , int b)
{
int c = a+b;
return c ;
}
public static void main(String[] args)
{
//sum(10,20); //零丁調(diào)用
//System.out.println(sum(10,20)); //輸出調(diào)用
int sum01 =sum(10,20); //賦值調(diào)用
}
B. 沒有明白返回值的辦法調(diào)用(void類型辦法的調(diào)用)
只能零丁應(yīng)用。(如不雅一個(gè)辦法沒有明白的返回值類型,辦法定義中“返回值類型”就可以用void代替,表示該辦法無返回值類型。)
四、留意事項(xiàng)
① Java中的每一類至少有一個(gè)構(gòu)造辦法,如不雅我們沒有去創(chuàng)建,體系主動(dòng)會(huì)為我們創(chuàng)建一個(gè)默惹9依υ參構(gòu)造辦法;
②然則如不雅我們定義了構(gòu)造辦法,體系就不會(huì)再為我們供給默惹9依υ參構(gòu)造辦法了。這個(gè)時(shí)刻想應(yīng)用無參構(gòu)造辦法必須本身定義。因?yàn)閷?shí)例化對(duì)象時(shí),不必定會(huì)輸入?yún)?shù),那么沒有無參的構(gòu)造辦法,又不輸入?yún)?shù),就會(huì)掉足;
③構(gòu)造辦法須要用public來潤飾,若應(yīng)用private,在其他類中無法將其實(shí)例化;
④構(gòu)造辦法是可以重載的。所謂重載,是指一個(gè)類中可以定義多個(gè)辦法名雷同,然則參數(shù)不合的辦法。調(diào)用時(shí),會(huì)根據(jù)不合的參數(shù)主動(dòng)匹配對(duì)應(yīng)的辦法。
相關(guān)案例查看更多
相關(guān)閱讀
- 網(wǎng)站建設(shè)特性
- 小程序設(shè)計(jì)
- 云南小程序開發(fā)課程
- 云南網(wǎng)站建設(shè)哪家強(qiáng)
- 云南省建設(shè)廳網(wǎng)站官網(wǎng)
- 云南小程序開發(fā)費(fèi)用
- 網(wǎng)站優(yōu)化
- 云南etc小程序
- vue開發(fā)小程序
- 云南網(wǎng)站建設(shè)服務(wù)公司
- 云南網(wǎng)站建設(shè)報(bào)價(jià)
- 網(wǎng)站建設(shè)靠譜公司
- 小程序
- flex
- 網(wǎng)站建設(shè)首選
- 小程序被騙
- web前端
- web開發(fā)技術(shù)
- 網(wǎng)絡(luò)公司報(bào)價(jià)
- 智慧農(nóng)貿(mào)市場(chǎng)
- 云南小程序哪家好
- 云南網(wǎng)站建設(shè)招商
- 曲靖小程序開發(fā)
- web教程
- 報(bào)廢車回收管理軟件
- 小程序的開發(fā)公司
- 汽車拆解管理軟件
- 云南小程序設(shè)計(jì)
- 北京小程序制作
- 云南網(wǎng)站建設(shè)專家