JAVA——構造方法
阿新 • • 發佈:2018-11-22
構造方法:實現在例項化之後為屬性賦值;
構造方法是類的一個特殊成員,在類例項化後被自動呼叫。
(一)構造方法的定義
一,構造方法滿足以下三個條件:
- 方法名與類名相同;
- 在方法名前沒有返回值型別的說明;
- 在方法中不能使用return語句返回一個值,但是可以單獨寫return語句作為方法的結束。
二,關於構造方法的使用:
- 若沒有定義構造方法,系統會自動提供一個預設的構造方法。
- 若是定義了構造方法,則以定義的構造方法為準。
- 構造方法的呼叫和物件記憶體分配幾乎是同步完成的,因此我們可以利用構造方法來為類中的屬性進行初始化操作。
- 類中組成:屬性,構造方法,方法
· 屬性是在物件開闢堆記憶體時開闢的空間 ;
· 構造方法是在使用new後呼叫的;
· 普通方法是在空間開闢了、構造方法執行之後可以多次呼叫的。 - 構造方法一般使用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();
}
}
執行結果如下: