日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

构造器是什么?(Java篇)

發布時間:2023/12/15 java 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 构造器是什么?(Java篇) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

構造方法的定義:

構造方法也叫構造器或者構造函數

構造方法與類名相同,沒有返回值,連void都不能寫

構造方法可以重載(重載:方法名稱相同,參數列表不同)

如果一個類中沒有構造方法,那么編譯器會為類加上一個默認的構造方法。

默認構造方法格式如下:

public 類名() {

}

如果手動添加了構造器,那么默認構造器就會消失。

建議代碼中將無參構造器寫出來。

public class Student {public String name;public int age;public void eat() {System.out.println("eat....");}//構造器/*** 名稱與類名相同,沒有返回值,不能寫void* 構造器可以重載* 如果類中沒有手動添加構造器,編譯器會默認再添加一個無參構造器* 如果手動添加了構造器(無論什么形式),默認構造器就會消失*/public Student() {System.out.println("無參構造器");}public Student(int a) {System.out.println("一個參數的構造器");age = 15;}public Student(int a, String s) {System.out.println("兩個參數的構造器");age = a;name = s;} }

構造方法的作用:

構造方法在創建對象時調用,具體調用哪一個由參數決定。

構造方法的作用是為正在創建的對象的成員變量賦初值。

public class Test {public static void main(String[] args) {//調用無參構造器Student s1 = new Student();//調用有參構造器Student s2 = new Student(15);System.out.println(s2.age);Student s3 = new Student(34, "小明");System.out.println(s3.name + ":" + s3.age);}}

構造方法種this的使用:

構造方法種可以使用this,表示剛剛創建的對象

構造方法種this可用于

this訪問對象屬性

this訪問實例方法

this在構造方法中調用重載的其他構造方法(要避免陷入死循環)

只能位于第一行

不會觸發新對象的創建

public class Student {public String name;public int age;public void eat() {System.out.println("eat....");}//構造器//使用this()調用重載構造器不能同時相互調用,避免陷入死循環public Student() {//this()必須出現在構造器的第一行,不會創建新的對象this(15);//調用了具有int類型參數的構造器System.out.println("默認構造器");}public Student(int a) {this.eat();eat();//this.可以省略}//this在構造器中表示剛剛創建的對象public Student(int a, String s) {System.out.println("兩個參數的構造器");this.age = a;this.name = s;} } public class Test {public static void main(String[] args) {Student s1 = new Student(15, "小明");System.out.println(s1.name + ":" + s1.age);Student s2 = new Student(12, "小紅");System.out.println(s2.name + ":" + s2.age);Student s3 = new Student();} }

歸納this在實例方法和構造方法種的作用

this是java多態的體現之一

this只可以在構造方法和實例方法種存在,不能出現在static修飾的方法或代碼塊中

this在構造方法中表示剛剛創建的對象

this在實例方法種表示調用改方法的對象

this可以在實例方法和構造方法中訪問對象屬性和實例方法

this有時可以省略

this可以在實例方法中作為返回值

this可以當作實參

this可調用重載的構造方法


一.構造方法的定義聲明
構造方法的名字必須和所在類的名字一致,沒有返回值,但不能聲明void,訪問權限可以為任意,但是一般情況下使用public方法權限,構造方法中的參數可以根據需要自行定義,參數的不同的構造方法構成重載;

例:

class Fu{public Fu(){} //無參的公有構造方法public Fu(int i){} //參數類型為int的公有構造方法......}public class Demo extends Fu{public Demo(){} //無參的公有構造方法public Demo(int i){} //參數類型為int的公有構造方法public Demo(int i,double d){} //參數類型為int和double的公有構造方法...}

二.構造方法的使用
java中構造方法的使用有兩個地方,一個是跟在關鍵字new后面,類名加上一個小括號(),小括號內根據實際加上實參,另外一個是跟在關鍵字super或this后加上一個小括號(),小括號內根據實際添加實參,下面進行舉例。

例1:

Demo demo = new Demo(); //這里是調用的是一個無參的構造方法,必須聲明在方法中,最好聲明在主方法

上面構造方法的參數根據實際添加實參,jvm根據構造方法的參數不同加載不同的構造方法;

例2:

public Demo(){this(2); //這里調用參數為int類型的本類的構造方法}

例3:

public Demo(){super(1); //調用參數為int類型的父類的構造方法}

注意:例2和例3中this或super調用構造方法只能出現在構造方法中,而且必須出現在第一行,所以一個構造方法中第一行只能為this或super調用構造方法,兩者不能同時調用構造方法出現,而且注意this或super調用構造方法時,要留構造方法出口,意思就是最后調用的構造方法中沒有再調用別的構造方法!

三.構造方法的作用
1.為了初始化成員屬性,而不是初始化對象,初始化對象是通過new關鍵字實現的

2.通過new調用構造方法初始化對象,編譯時根據參數簽名來檢查構造函數,稱為靜態聯編和編譯多態
(參數簽名:參數的類型,參數個數和參數順序)

3.創建子類對象會調用父類構造方法但不會創建父類對象,只是調用父類構造方法初始化父類成員屬性;

我總是要把構造器和方法混淆,后來發現,

方法,實際上,是需要用于執行java代碼的,而構造器,

構造器,,,是一個類的實例!!

為什么呢?

類的實例,我們需要用類來創建對象,進而訪問其屬性,因為實例是需要被用來調用的,但是調用的話,我們不得不去考慮一個問題,就是對象,最終是被存儲在內存里面的,而存儲的時候,我們的內存不得不需要給他再另外開辟新的內存空間,那么,java是如何給這種我們所需要的類來開辟內存空間的呢?這就涉及到了java的內存機制,就是說,我們必須要給這個類制作一個構造器,而且這個構造器的名稱必須和這個類的名稱是一致的,這樣,我們的java編譯器才能識別這個類,進而給這個類在內存中開辟內存空間,也就是我們所說的,我們手動,人為的給他進行“初始化”,事例如下:

class Rock {Rock() {System.out.print("Rock");}}

這樣,當我們在對Rock類進行調用的時候,我們的java編譯器就會事先對他進行“自動”地初始化,開辟內存空間

那么現在問題又來了,舉個例子,我們的Rock()方法需要帶有一個參數,形參,但是整個代碼中,需要不僅僅是帶有形參的Rock();還需要不帶形參的Rock(),在我們的構造器對類進行構造的時候,需要將功能類似的,但形參不同的方法同時打包在該類下,以便在我們調用某個方法的時候,直接重載構造器中的該方法,可以說,這種構造形式,滿足了我們對功能類似,形參不同的方法,調用的時候,進行重載,而滿足了編譯器自動初始化,人不需要手動初始化的需求。

而且有個,問題,本來兩個方法,功能上是類似的,一棵樹和一株樹苗,你非得要給他們起不同的名字,多別扭,好在有了構造器,能夠是功能相似的方法起相同的名字,不同的參數,而能夠在被調用的時候得以重載,多么牛逼的構造器 啊

總結

以上是生活随笔為你收集整理的构造器是什么?(Java篇)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。