1. 程式人生 > >JAVA——構造方法

JAVA——構造方法

構造方法:實現在例項化之後為屬性賦值;
構造方法是類的一個特殊成員,在類例項化後被自動呼叫。

(一)構造方法的定義

一,構造方法滿足以下三個條件:

  1. 方法名與類名相同;
  2. 在方法名前沒有返回值型別的說明;
  3. 在方法中不能使用return語句返回一個值,但是可以單獨寫return語句作為方法的結束。

二,關於構造方法的使用:

  1. 若沒有定義構造方法,系統會自動提供一個預設的構造方法。
  2. 若是定義了構造方法,則以定義的構造方法為準。
  3. 構造方法的呼叫和物件記憶體分配幾乎是同步完成的,因此我們可以利用構造方法來為類中的屬性進行初始化操作。
  4. 類中組成:屬性,構造方法,方法
    · 屬性是在物件開闢堆記憶體時開闢的空間 ;
    · 構造方法是在使用new後呼叫的;
    · 普通方法是在空間開闢了、構造方法執行之後可以多次呼叫的。
  5. 構造方法一般使用public修飾

系統自動建立的預設構造方法形式:

//預設的構造方法中沒有引數,常用形式為以下形式
public 類名(){

}

自己定義的構造方法形式:

public 類名(引數型別 引數,引數型別 引數...){

}

具體程式碼為:

class Person2{
	//方法,此處先使用公共屬性
	public String name;
	public int age;
	//構造方法
	public Person1(String n,int i){
		name = n;
		age = i;
	}
	//方法
	public void intriduce
(){ System.out.println("姓名:"+name+",年齡:"+age); } }

舉一個完整例子:

 class Person2{
 
	 //屬性——private封裝
	private String name;
	private int age;
	//對屬性的 setter設定 和 getter獲取
	public void setName(String n){
		name = n;
	}
	public String getName(){
		return name;
	}
	public void setAge(int a){
		if(age <
0 || age >= 150){ System.out.println("輸入錯誤!"); } else{ age = a; } } public int getAge(){ return age; } //構造方法 public Person2(String n,int a){ name = n; setAge(a); } //方法 public void intriduce(){ System.out.println("姓名:"+name+",年齡:"+age); } }
public class Test3{
	public static void main(String[] args){
		Person2 sg = new Person2("kelly",21);
		//使用了new之後呼叫構造方法,即賦值
		sg.intriduce();
	}
}

執行結果如下:
在這裡插入圖片描述

(二)構造方法的過載

1, 在一個類中可以定義多個構造方法,只要每個構造方法的引數型別或引數個數不同即可。

2,通過不同的構造方法來為不同屬性賦值。

· 若干構造方法,最好按照引數個數升序或降序。

對上個例子進行修改:

 class Person2{
	 //方法——private封裝
	private String name;
	private int age;
	//setter設定 和 getter獲取
	public void setName(String n){
		name = n;
	}
	public String getName(){
		return name;
	}
	public void setAge(int a){
		if(age < 0 || age >= 150){
			System.out.println("輸入錯誤!");
		}
		else{
		age = a;
		}
	}
	public int getAge(){
		return age;
	}
	//構造方法1,只有一個引數
	public Person2(String n){
		name = n;
	}
	//構造方法2,兩個引數
	public Person2(String n,int a){
		name = n;
		setAge(a);
	}
	//方法
	public void intriduce(){
		System.out.println("姓名:"+name+",年齡:"+age);
	}
}

public class Test3{
	public static void main(String[] args){
		Person2 sg1 = new Person2("kelly",21);
		//呼叫構造方法2
		
		Person2 sg2 = new Person2("張三");
		//呼叫構造方法2
		
		sg1.intriduce();
		sg2.intriduce();
	}
}

執行結果如下:
在這裡插入圖片描述