构造方法浅析
1? 無參構造與有參構造
先讓我們了解一下有參構造方法和無參構造方法,見名思意,有參構造就是有參數傳遞,無參構造就是沒有參數傳遞。
參考代碼如下:
1 class People{//定義一個人類 2 String name;//姓名 3 char gender;//性別 4 int date;//出生日期 5 People(){//定義無參構造方法 6 System.out.println("這是無參構造函數,張三出生了");//輸出提示 7 this.name="張三";//在無參構造中初始化屬性 8 this.gender='男';//在無參構造中初始化屬性 9 this.date=19940216;//在無參構造中初始化屬性 10 } 11 People(String name,char gender,int date){//定義有參構造方法 12 System.out.println("這是有參構造函數,"+name+"出生了");//輸出提示 13 this.name=name;//在有參構造方法中將形參傳給實參 14 this.gender=gender;//在有參構造方法中將形參傳給實參 15 this.date=date;//在有參構造方法中將形參傳給實參 16 } 17 }從以上代碼可以看出,在創建具體對象時,無參構造方法的初始化在代碼中固定,當然,可以不要這段代碼,在創建對象時根據“類名.屬性”定義,但是較為麻煩,這也是有參構造函數的最大優勢之一。
2? 子類構造函數常見問題分析
接下來我們依據上面的People類來創建一個Student子類,參考代碼如下:
1 class Student extends People{//定義一個學生類,繼承人類 2 int xuehao;//再定義一個新的屬性,學號 3 Student(String name,char gender,int date,int xuehao){//定義有參構造方法 4 System.out.println("這是有參構造函數,繼承了People類,學生"+name+"來學校了");//輸出提示 5 this.name=name;//在有參構造方法中將形參傳給實參 6 this.gender=gender;//在有參構造方法中將形參傳給實參 7 this.date=date;//在有參構造方法中將形參傳給實參 8 this.xuehao=xuehao;//在有參構造方法中將形參傳給實參 9 } 10 }【注意】在創建子類時,可能會因為子類的構造函數而出現編譯不通過的情況。
比如:
1 Student student=new Student();若要創建一個子類的對象,則要調用子類構造函數。在子類構造函數(無參、有參)的第一行默認調用父類無參構造函數,若父類中沒有無參構造函數,子類必須顯示調用父類的有參構造函數(super)。
解決方法:
【注】可以使用“super.屬性”或“super.方法”調用父類的屬性或方法。
至于super方法怎么用,接著看以下代碼:
1 class People{ 2 String name; 3 //People(){};//無參構造 4 People(String name){//有參構造 5 this.name=name; 6 } 7 } 8 class Student extends People{ 9 int xuehao; 10 Student(String name,int xuehao){ 11 super(name);//調用父類有參構造 12 this.xuehao=xuehao; 13 } 14 }看明白了嗎?應該是明白了。
3??? 創建類對象數組
接下來我們來談一談創建對象的問題,有時候我們需要使用一個類的多個對象,比如說學生類,如果一個接一個的創建學生類,不是不可取,只是很麻煩,較占空間,最為關鍵的是以后若想增加或刪除某個對象時很麻煩,特別是在寫一個學生成績管理系統之類的時候,無路可走。故我們要用另一種方法創建一個類對象:數組對象。這種方法常與有參構造相結合使用,因為初始化的時候很方便!
參考代碼如下:
1 Student S[] = new Student[50];//定義一個Student數組對象,可以存儲50位同學的信息 2 S[0]=new Student("張一","男",96,67,85,8000);//初始化第一位學生 3 S[1]=new Student("張二","女",46,56,84,8001);//初始化第二位學生 4 S[2]=new Student("張三","男",58,61,86,8002);//初始化第三位學生 5 S[3]=new Student("張四","女",84,67,23,8003);//初始化第四位學生 6 S[4]=new Student("張五","男",65,94,56,8004);//初始化第五位學生 7 S[5]=new Student("張六","女",43,75,98,8005);//初始化第六位學生 8 S[6]=new Student("張七","女",67,45,78,8006);//初始化第七位學生 9 S[7]=new Student("張八","男",82,65,94,8007);//初始化第八位學生 10 S[8]=new Student("張九","女",91,23,28,8008);//初始化第九位學生 11 S[9]=new Student("張十","男",98,84,64,8009);//初始化第十位學生使用這種定義,在新增學生信息的時候,只需要控制數組的下標即可,非常方便!
多嘴一句,double也是一個類對象,如下:
1 double a[]=new double[100];//創建一個double類數組轉載于:https://www.cnblogs.com/qijunhui/p/8284300.html
總結
- 上一篇: Beta阶段事后分析
- 下一篇: sublime提示There are n