java構(gòu)造方法的互相調(diào)用方式
java構(gòu)造方法的互相調(diào)用
public Student(int age){ super(); this.age = age; } public Student(String name , int age){ /* super(); 注意,這里不能再調(diào)用super();因?yàn)橄逻叺膖his(age);調(diào)用了上方的構(gòu)造器,已經(jīng)存在了 super();該構(gòu)造器內(nèi)不能再次調(diào)用。所以只寫一個(gè)this(age)就夠了; */ this(age); this.name = name; }
其他的小細(xì)節(jié)
構(gòu)造方法體內(nèi)調(diào)用父類構(gòu)造器( super(); )或重載構(gòu)造器( this(); )時(shí),應(yīng)放在方法體內(nèi)的第一行。
構(gòu)造方法及其重載
1.構(gòu)造方法
類中有一種特殊的成員方法,其方法名與類名相同,稱為構(gòu)造方法。
通過(guò)構(gòu)造方法可以完成對(duì)象的創(chuàng)建,以及實(shí)例變量的初始化。
下面是一個(gè)構(gòu)造方法示例:
public class Puppy{ public Puppy( ) { } public Puppy(String name) { //這個(gè)構(gòu)造器僅有一個(gè)name } }
每個(gè)類都有一個(gè)隱藏的無(wú)參構(gòu)造函數(shù)。
public class Dog{ /** * 帶參構(gòu)造函數(shù) * @param name * @param age */ public Dog(String name,int age){ this.age = age; this.name = name; } /** * 無(wú)慘構(gòu)造函數(shù) */ public Dog(){} String name; int age; public void ptint(){ System.out.println("name = "+this.name+";age = "+age); } public static void main(String[] args) { new Dog().ptint(); new Dog("花花",9).ptint(); } }
2.構(gòu)造方法和對(duì)象的初始化
構(gòu)造方法怎么調(diào)用,使用哪個(gè)運(yùn)算符?
當(dāng)使用new 運(yùn)算符實(shí)例化一個(gè)對(duì)象時(shí),系統(tǒng)為對(duì)象創(chuàng)建內(nèi)存區(qū)域并自動(dòng)調(diào)用構(gòu)造方法初始化成員變量。
下面是new運(yùn)算符實(shí)例化一個(gè)對(duì)象。
Puppy p = new Puppy( ); Puppy p1 = new Puppy(“張三”);
3.實(shí)例——用構(gòu)造方法初始化成員變量
class Triangle { int x,y,z; public Triangle(int i,int j,int k) { x=i;y=j;z=k; public static bpplean judge(Triangle m) { if(Math.sqrt(m.x*m.x+m.y*m.y)= =Math.sqrt(m.z*m.z)) //引用Math類庫(kù)的sqrt()方法 return true; else return false; } public static void main(String args[]) { Triangle t1=new Triangle(3,4,5); if(judge(t1)) //調(diào)用judge()方法,判斷t1的成員變量是 //否能構(gòu)成直角三角形的3條邊長(zhǎng) System.out.println("這是一個(gè)直角三角形"); else System.out.Println("這不是一個(gè)直角三角形"); } }
4.構(gòu)造方法的特點(diǎn)
- 構(gòu)造方法名與類名必須一致,大小寫也要一樣。
- 構(gòu)造方法沒(méi)有返回值,void類型也不寫。
- 在創(chuàng)建一個(gè)對(duì)象的時(shí)候,至少要調(diào)用一個(gè)構(gòu)造方法。
- 構(gòu)造方法不能顯式地直接調(diào)用。
- 構(gòu)造方法的主要作用是對(duì)對(duì)象初始化。
- 修飾符列表目前統(tǒng)一寫:public。千萬(wàn)不要寫public static。
5.構(gòu)造方法重載
構(gòu)造方法是支持方法重載的。在一個(gè)類當(dāng)中構(gòu)造方法可以有多個(gè)。并且所有的構(gòu)造方法名字都是一樣的。
對(duì)于實(shí)例變量來(lái)說(shuō),只要你在構(gòu)造方法中沒(méi)有手動(dòng)給它賦值,統(tǒng)一都會(huì)默認(rèn)賦值。默認(rèn)賦系統(tǒng)值。
方法重載特點(diǎn):
- 重載的方法必須在同一個(gè)類中
- 方法名相同
- 參數(shù)列表不同(不包含參數(shù)名不同)
- 方法的重載與訪問(wèn)修飾符和返回值類型無(wú)關(guān)
6.成員變量
類中的屬性,也就是直接在類中定義的變量稱作成員變量,它定義在方法外面。
局部變量就是定義在方法中的變量;一般情況下,局部變量在使用前需要賦值,否則會(huì)編譯出錯(cuò)。
成員變量和局部變量的區(qū)別:
- 作用域不同。局部變量的作用域僅限于定義它的方法,在該方法外無(wú)法訪問(wèn)它;成員變量的作用域在整個(gè)類內(nèi)部都是可見(jiàn)的,所有成員方法都可以使用它,如果訪問(wèn)權(quán)限允許,還可以在類外部使用成員變量。
- 初始值不同。成員變量在定義時(shí)可以不初始化,Java會(huì)給成員變量賦初始值;但是Java不會(huì)給局部變量賦初始值,因此在定義局部變量時(shí)必須初始化后再使用。
- 在同一個(gè)方法中,不允許有同名的局部變量,在不同的方法中可以有同名的局部變量。
- 局部變量可以和成員變量同名,并且在使用時(shí),局部變量具有更高的優(yōu)先級(jí)。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java BigDecimal精度丟失及常見(jiàn)問(wèn)分析
這篇文章主要為大家介紹了java BigDecimal精度丟失及常見(jiàn)問(wèn)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Java使用RedisTemplate如何根據(jù)前綴獲取key列表
這篇文章主要介紹了Java使用RedisTemplate如何根據(jù)前綴獲取key列表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06java?-jar啟動(dòng)參數(shù)設(shè)置file.encoding編碼,解決中文亂碼的問(wèn)題
這篇文章主要介紹了java?-jar啟動(dòng)參數(shù)設(shè)置file.encoding編碼,解決中文亂碼的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07在Spring Boot中實(shí)現(xiàn)多環(huán)境配置的方法
在SpringBoot中,實(shí)現(xiàn)多環(huán)境配置是一項(xiàng)重要且常用的功能,它允許開(kāi)發(fā)者為不同的運(yùn)行環(huán)境,這種方式簡(jiǎn)化了環(huán)境切換的復(fù)雜度,提高了項(xiàng)目的可維護(hù)性和靈活性,本文給大家介紹在Spring Boot中實(shí)現(xiàn)多環(huán)境配置的方法,感興趣的朋友跟隨小編一起看看吧2024-09-09Java的面向?qū)ο缶幊袒靖拍顚W(xué)習(xí)筆記整理
這篇文章主要介紹了Java的面向?qū)ο缶幊袒靖拍顚W(xué)習(xí)筆記整理,包括類與方法以及多態(tài)等支持面向?qū)ο笳Z(yǔ)言中的重要特點(diǎn),需要的朋友可以參考下2016-01-01