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