成员方法快速入门和方法的调用机制原理
-
基本介绍
在某些情况下,我们要需要定义成员方法(简称方法)。比如人类: 除了有一些属性外( 年龄,姓名…),我们人类还有一些行为比如:可以说话、跑步…,通过学习,还可以做算术题。这时就要用成员方法才能完成。现在要求对
Person
类完善。 -
成员方法的定义
public 返回数据类型 方法名(形参列表..){//方法体 语句; return 返回值; }
-
成员方法使用细节
-
一个方法最多有一个返回值,如果返回多个结果,用返回数组的方法.
package Hsp; public class Method { public static void main(String[] args) { AA a = new AA(); int[] res = a.getSumAndSub(1,4); System.out.println("和=" + res[0]); System.out.println("差=" + res[1]); } } class AA{ //方法,接收一个二维数组 public int[] getSumAndSub(int n1,int n2){ int[] resarr = new int[2];//创建一个数组 resarr[0] = n1 + n2; resarr[1] = n1 - n2; return resarr; } }
-
返回类型可以为任何类型,包含基本类型或引用类型(数组,对象)
-
如果方法要求有返回数据类型, 则方法体中最后的执行语句必须为return值,而且要求返回值类型必须和return的值类型一致或兼容
-
若方法体内有void, 则方法体中可以没有return语句,或者只写return
-
一个方法可以有0个参数,也可以有多个参数,之间用逗号隔开,比如getSum(int n1,int n2)
-
参数列表可以为任意类型, 包含基本类型或引用类型,比如printArr(int[][] [] [] map)
-
调用带参数的方法时,一定对应着参数列表传入相同类型或兼容类型的参数
-
方法定义时的参数称为形式参数,简称形参; 方法调用时的参数称为实际参数,简称实参,实参和形参的类型一定要一致或兼容,个数,顺序必须一致
-
方法体: 里面写完成功能的具体语句, 可以为输入,输出,变量,运算,分支,循环,方法调用,但里面不能再定义方法! 即: 方法不能嵌套定义
-
方法调用细节: 同一个类中的方法调用,直接调用即可. 比如print(参数)
package Hsp; public class Method { public static void main(String[] args) { A a = new A(); a.sayOk(); } } class A{ public void print(int n) { System.out.println("print()方法被调用 n=" + n); } public void sayOk(){ print(19); System.out.println("继续执行sayOk" ); } }
-
跨类中的方法a类调用b类方法: 需要通过对象名调用
package Hsp; public class Method { public static void main(String[] args) { A a = new A(); a.m1(); } } class A{ public void print(int n) { System.out.println("print()方法被调用 n=" + n); } public void sayOk(){ print(19); System.out.println("继续执行sayOk" ); } public void m1(){ //创建B对象,然后再调用方法 System.out.println("m1()方法被调用"); B b = new B(); b.hi(); System.out.println("m1()方法继续执行:"); } } class B{ public void hi() { System.out.println("B类中的hi()被执行"); } }
-
跨类的方法调用和方法的访问符相关,先暂时这么提一下,后面我们讲到访问修饰符时,还要再细说
-
-
成员方法快速入门
-
添加
speak
成员方法,输出 “我是一个好人”public class Method01 { public static void main(String[] args) { //方法使用 //1. 方法写好后,如果不去调用(使用),不会输出 //2. 先创建对象 ,然后调用方法即可 Person p1 = new Person(); p1.speak(); //调用方法 } } class Person { String name; int age; //方法(成员方法) //添加speak 成员方法,输出 “我是一个好人” //1. public 表示方法是公开 //2. void : 表示方法没有返回值 //3. speak() : speak是方法名, () 形参列表 //4. {} 方法体,可以写我们要执行的代码 //5. System.out.println("我是一个好人"); 表示我们的方法就是输出一句话 public void speak() { System.out.println("我是一个好人"); } } package Hsp; public class Method { public static void main(String[] args) { //测试 B p1 = new B(); p1.speak(); p1.age(2); } } //添加 `speak` 成员方法,输出 “我是一个好人” class B{ String name; int age; public void speak(){ System.out.println("我是一个好人"); } public void age(int i) { System.out.println(i); } }
-
添加
cal01
成员方法,可以计算从1+..+1000
的结果public class Method01 { public static void main(String[] args) { //方法使用 //1. 方法写好后,如果不去调用(使用),不会输出 //2. 先创建对象 ,然后调用方法即可 Person p1 = new Person(); p1.cal01(); //调用cal01方法 } } //添加cal01 成员方法,可以计算从 1+..+1000的结果 class Person { public void cal01() { int res = 0; for(int i = 1; i <= 1000; i++) { res += i; } System.out.println("cal01方法 计算结果=" + res); } }
-
添加
cal02
成员方法,该方法可以接收一个数n
,计算从1+..+n
的结果public class Method01 { public static void main(String[] args) { Person p1 = new Person(); p1.cal02(5); //调用cal02方法,同时给n = 5 p1.cal02(10); //调用cal02方法,同时给n = 10 } } //添加cal02 成员方法,该方法可以接收一个数n,计算从 1+..+n 的结果 //1. (int n) 形参列表, 表示当前有一个形参 n, 可以接收用户输入 class Person { public void cal02(int n) { int res = 0; for(int i = 1; i <= n; i++) { res += i; } System.out.println("计算结果=" + res); } }
-
添加
getSum
成员方法,可以计算两个数的和public class Method01 { public static void main(String[] args) { Person p1 = new Person(); //调用getSum方法,同时num1=10, num2=20 //把 方法 getSum 返回的值,赋给 变量 returnRes int returnRes = p1.getSum(10, 20); System.out.println("getSum方法返回的值=" + returnRes); } } class Person { public int getSum(int num1, int num2) { int res = num1 + num2; return res; } } //添加getSum成员方法,可以计算两个数的和 //解读 //1. public 表示方法是公开的 //2. int :表示方法执行后,返回一个 int 值 //3. getSum 方法名 //4. (int num1, int num2) 形参列表,2个形参,可以接收用户传入的两个数 //5. return res; 表示把 res 的值, 返回
-
-
方法的调用机制原理