阿拉德之怒手遊超詳細圖文架設教程
基本介紹
-
在某些情況下,我們要需要定義成員方法(簡稱方法), 比如人類除了有一些屬性外(年齡,
姓名 ),我們人類還有一些行為比如:可以說話、跑步,通過學習,還可以做算術題。這時就
要用成員方法才能完成。現在要求對Person類完善。
Method01.java
-
新增speak成損方法,輸出我是一隻好人
-
新增cal01成員方法,可以計算從1+.+1000的結果
-
新增ca02成員方法,該方法可以接收一個數n,計算從1+.+n的結果
-
新增getSuml成員方法,可以計算兩個數的和
public class Method01 {
//編寫一個main方法
public static void main(String[] args) {
//方法的使用
//6.方法寫好之後如果不去呼叫的話,不會生效方法裡的內容
//7.先建立物件,然後再去呼叫其方法即可
Person02 p1 = new Person02();
p1.speak();
//建立物件之後,就會找Person類中的speak方法,找到之後就去使用
p1.cal01();
p1.cal02(5);
//呼叫cal02方法同時給n一個5的賦值
int returnRes = p1.getSum(50,20);
//呼叫getSum方法, 同時給num1 num2賦值
//方法返回的值賦值給returnRes
System.out.println("getSum方法返回的值="+returnRes);
}
}
class Person02{
String name;
int age;
//方法(成員方法)
//新增speak成員方法, 輸出"我是一個好人"
//1.public表示方法公開
//2.void表示方法無返回值
//3.speak()方法名稱 ()形參列表目前為空
//4.{}內部叫做方法體, 可以寫我們要執行的程式碼,或者相關的功能
public void speak(){
System.out.println("我是一個好人");
//5.表示我們的方法就是輸出一段字串
}
//新增cal01成員方法 可以計算從 1+...1000的計算結果
public void cal01(){
int res = 0;
for (int i=0;i<=1000;i++){
res += i;
}
System.out.println("計算結果:"+res);
//輸出迴圈的結果
}
//新增cal02方法,該方法可以接收一個數n,計算從1+n的結果
//1.這裡的(int n)為形參列表,表示當前有一個形參n,可以接收到使用者的輸入
public void cal02(int n){
int res = 0;
for (int i=0;i<=n;i++){
//這裡的唯一變化就是,可以按照輸入的次數完成迴圈
res += i;
}
System.out.println("cal02的計算結果:"+res);
//輸出迴圈的結果
}
//新增getSum成員方法,可以計算兩個數的和
//1.public表示方法是公開的
//2.int 表示方法執行之後 ,返回一個int值
//3.getSum 方法名
//4.(int num1,int num2)形參列表 ,2個形參 ,可以接收使用者傳入的兩個數
//5.return res return表示將res的值, 返回
public int getSum(int num1,int num2){
int res = num1 + num2;
return res;
}
}
方法呼叫小結 :
-
當程式執行到方法時,就會開闢一個獨立 的空間(棧空間)
-
當方法執行完畢,或者執行到return語句 時,就會返回
-
返回到呼叫方法的地方
-
返回之後繼續執行方法後面的程式碼
-
當main方法(棧)執行完畢之後 ,整個程式退出
成員方法的必要性
·為什麼需要成員方法 ?
-
√看一個需求:
請遍歷一個數組,輸出陣列的各個元素值。
int [][]map = {(0,1,1),(1,1,1),(1,1,3)};
public class Method02 {
public static void main(String[] args) {
//請遍歷一個數組,輸出陣列的各個元素值。
int [][] map = {{0,0,1},{1,1,1},{1,1,3}};
//遍歷map
//傳統的解決方法就是直接遍歷
for (int i =0; i < map.length; i++){
for (int j= 0;j < map[i].length;j++){
System.out.print(map[i][j]+" ");
}
System.out.println();
//每次遍歷陣列之後換行
}
}
}
可以發現使用這樣的方式確實可以實現對於程式碼的遍歷
但是如果要求是讓你多遍歷幾次 的話就要寫很多次程式碼
public class Method02 {
public static void main(String[] args) {
//請遍歷一個數組,輸出陣列的各個元素值。
int [][] map = {{0,0,1},{1,1,1},{1,1,3}};
//使用方法完成輸出
Mytools tool = new Mytools();
tool.printArr(map);
//這裡就將陣列傳入到形參
tool.printArr(map);
tool.printArr(map);
//實現三次
}
}
//把輸出的功能 ,寫到一個類的方法中 ,然後呼叫這個方法即可
class Mytools {
//方法,接收一個二維陣列
public void printArr(int[][] map) {
System.out.println("==============");
//對傳入的map陣列進行遍歷輸出
for (int i = 0; i < map.length; i++) {
for (int j = 0; j < map[i].length; j++) {
System.out.print(map[i][j] + " ");
}
System.out.println();
}
}
}
使用這樣的辦法 ,就可以是實現對遍歷多次 ,而不是寫多次程式碼
成員方法的好處
-
提高程式碼的複用性
-
可以將實現的細節封裝起來,然後供其他使用者來呼叫即可。
成員方法的定義
public 返回資料型別 方法名(引數列表..){
• //方法體語句;
• return返回值;
}
//這裡的public就是一種訪問修飾符
-
形參列表:表示成員方法輸入cal(intn) ,getSum(int num1 ,int num2)
-
資料型別(返回型別):表示成員方法輸出,void表示沒有返回值
-
方法主體:表示為了實現某一功能程式碼塊
-
return語句不是必須的。(例如void)
·注意事項和使用細節
MethodDetail.java
訪問修飾符(作用是控制方法使用的範圍)
如果不寫訪問修飾符就是預設訪問 ,[四種 : public , protected ,預設(也就是不寫) ,private]
---返回資料型別
-
一個方法最多隻能有一個返回值 [思考,如何返回多個結果? 可以使用陣列的方式返回]
-
返回型別可以為任意型別,包含基本型別或引用型別(陣列,物件)
-
如果方法要求有返回資料型別,則方法體中最後的執行語句必須為return值;而 且要求返回值型別必須和return的值型別一致或相容
-
如果方法是void,則方法體中可以沒有return語句,或者只寫return:
-
遵循駝峰命名法,最好見名知義,表達出該功能的意思即可,比如得到兩個數的和 getSum ,開發中按照規範命名
形參列表
-
一個方法可以有0個引數,也可以有多個引數,中間用逗號開,比如 getSum (int n1, int n2)
-
引數型別可以為任意型別,包含基本型別或引用型別,比如
printArr(int[][]map)
-
呼叫帶引數的方法時,一定對應著引數列表傳入相同型別或相容型別的引數!【getSum】
例如 需要傳入的型別為int 我們可以傳入byte ,byte型別會自動轉換為int型別 ,這就是相容型別
但是相容支支援向上相容 ,不支援向下相容 ,例如傳入double的高精度引數
-
方法定義時的引數稱為形式引數,簡稱形參;方法呼叫時的引數稱為實際引數,簡稱實參,實 參和形參的型別要一致或相容、個數、順序必須一致![演示]
-
方法體裡面寫完成功能的具體的語句,可以為輸入、輸出、變數、運算、分支、迴圈、方法呼叫,但裡 面不能再定義方法!即:方法不能巢狀定義。
public void f4(){
pubilc void f5(){
}
}
//此時就會報錯,非法的表示式的開始!
√方法呼叫細節說明
-
同一個類中的方法呼叫:直接呼叫即可。比如print(引數): 案演示:A類sayok呼叫print()
-
跨類中的方法A類呼叫B類方法:需要通過物件名呼叫。比如物件名方法名(參 數):案例演示:B類sayHello呼叫print()
-
特別說明一下:跨類的方法呼叫和方法的訪問修飾符相關,先暫時這麼提一下,