面向物件——普通方法及構造方法及帶參方法和方法過載
普通方法
類的方法是為了完成某個特定的應用程式功能存在的,我們要實現程式的某些功能的時候,一般都是某些類的功能,比如上一篇中的學生類,有一個展示學生資訊的方法,我們就可以把它放到學生類裡面(因為只要是學生,他就都有這個展示資訊的功能),而方法是有返回值的,也可以沒有返回值,返回型別為void。有返回值的時候,方法最後必須return 返回值。如:
//這是一個show方法,只是輸出hello,返回值為void
public void show(){ System.out.print("hello"); }
//這個show方法一樣可以輸出hello,但是他返回型別是String,所以必須return 一個String型別的東西,不一定是s,只要是String型別的就可以,比如return ""; 一樣可以執行,但是測試輸出的時候,輸出的不是hello,因為return返回什麼,就給什麼。
public String show(){ String s="hello" return s; }
構造方法和帶參構造方法
每一個類都會預設有一個無參的構造方法,構造方法的方法名是和型別一致的,構造方法是缺少返回值的,如:
//Student類的預設無參構造方法Student()
public class Student{ public Student(){ } }
無參的構造方法寫不寫都是存在的,但是如果寫了一個帶參的構造方法,預設的無參構造方法就會被帶參的構造方法覆蓋掉,這時候如果還想使用無參的構造方法,就需要手動寫出來。
一般更多傾向於使用帶參的構造方法
帶參構造方法的意義就在於建立物件的時候就可以直接初始化物件,省去程式碼的繁瑣,其實我們每一次建立一個物件,都在呼叫構造方法,例如:
public class Text { public static void main(String[] args) {
//new 後面的 Student()就是呼叫了Student類的構造方法 Student s=new Student(); s.name="張三"; s.age=18; s.num=2014132209; s.score=100; s.showInfo(); } }
所以我們可以寫一個帶參的構造方法,在建立物件的時候直接賦值初始化物件,減少程式碼量,如:
public class Student { public String name;//學生姓名 public int age;//學生年齡 public int num;//學生學號 public float score;//學生成績
public Student() {} public Student(String name, int age, int num, float score) { super(); this.name = name; this.age = age; this.num = num; this.score = score; } public void showInfo(){ System.out.println("姓名:"+name+"年齡:"+age+"學號:"+num+"成績:"+score); } }
這就寫了一個帶參的構造方法,我們在main方法中建立物件的時候就可以直接賦值了:
一樣的效果,更簡單的配方,這就是帶參構造方法的好處。
普通帶參方法
普通帶參方法其實就是main方法中你呼叫這個普通方法的時候,你給我一個東西,我在我的方法裡面有使用到你給我的這個東西(引數)進行運算或者判斷等等實現具體的功能,再返回給你你需要的東西,在之後的具體專案中再深入體會。
帶參方法有一下注意事項:
1.方法定義處,引數叫作形式引數(形參),主要來約束引數的型別。
2.形參名字可以隨意(但要具有意義),遵循駝峰命名規則---studentName;
3.方法調用出處,引數叫作實際引數(實參),名字也要有意義,遵循駝峰規則。
4.形參和實參型別必須一致,名字可以不一致,也可以一致。
5.方法有沒有返回值,和方法有沒有引數,沒有任何關係。
6.方法引數可以有多個,多個引數之間用逗號隔開。
7.多個形參和實參的數量要一致,資料型別也要一致。
當引數傳遞為基本資料型別的時候,引數變化不保留。
當引數傳遞為引用資料型別的時候,引數變化會保留。Stiring和陣列都是引用資料型別。
方法過載
就是一個類中的方法,允許出現多個同名但不同參的方法,叫作方法過載,主要為了方便呼叫方法的時候需要傳參的型別可能有時多有時少,但是方法的意義都是一樣的,增加程式碼的重用性和可閱讀性,如:
public Student(String name, int age, int num, float score) {
super();
this.name = name;
this.age = age;
this.num = num;
this.score = score;
}
public Student(int age, int num, float score) {
this.age = age;
this.num = num;
this.score = score;
}
public Student(int num, float score) {
this.num = num;
this.score = score;
}