只有永远躺在泥坑里的人,才不会再掉进坑里。——黑格尔
前言
前面我们说到,类是描述了一组有相同特性(属性)和相同行为(方法)的一组对象的集合,上一周我们学习了如何定义一个类,本周我们学习如何定义类的成员方法。
一、方法的定义
声明成员方法可以定义类的行为,行为表示一个对象能够做的事情或者能够从一个对象取得的信息。类的各种功能操作都是用方法来实现的,属性只不过提供了相应的数据。一个完整的方法通常包括方法名称、方法主体、方法参数和方法返回值类型,其结构如下图所示:
方法即为对象定义相应的操作,定义的一般格式如下:
<修饰符><返回类型><名字>(<参数列表>)<块>
其中:
<名字>是方法名,它必须使用合法的标志符。
<返回类型>说明方法返回值的类型。如果方法不返回任何值,则声明为void,java对待返回值的要求很严格,方法返回值必须与所说明的类型相匹配,如果方法说明有返回值,比如说int,那么方法分支返回时都必须返回一个整数值。
<修饰符>段可以包含几个不同的修饰符,其中限定访问权限的修饰符包括public,protected和private,public访问修饰符表示该方法可以被任何其他代码调用;而private表示方法只能被类中的其它方法调用,在类外不可见;Protected表示该方法是受保护的,只可以被同一包及其子类的实例对象访问。
<参数列表>是传送给方法的参数表,表中各元素间以逗号分隔,每个元素由一个类型和一个标志符组成。
<块>表示方法体,是要实际执行的代码段。
一个示例如下:
public class Student { //创建一个学生类
public StringBuffer printInfo(Student st) {
StringBuffer sb = new StringBuffer();
sb.append("学生姓名:"+st.Name+"\n 学生年龄:"+st.Age+"\n 学生性别:"+st.isSex());
return sb;
}
}
上述代码创建了一个名称为 printInfo 的方法,其返回值类型为 StringBuffer(引用数据类型)。该方法需要传递一个 Student 类型的参数,最后需要将一个 StringBuffer 类型的数据返回。
二、方法的调用
一般来说,可以通过以下方式来调用成员方法:
methodName({paramList})
关于方法的参数,经常会提到形参与实参,形参是定义方法时参数列表中出现的参数,实参是调用方法时为方法传递的参数。
方法的形参和实参具有以下特点:
1) 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在方法内部有效,方法调用结束返回主调方法后则不能再使用该形参变量。
2) 实参可以是常量、变量、表达式、方法等,无论实参是何种类型的量,在进行方法调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值、输入等办法使实参获得确定值。
3) 实参和形参在数量、类型和顺序上应严格一致,否则会发生“类型不匹配” 的错误。
4) 方法调用中发生的数据传送是单向的,即只能把实参的值传送绐形参,而不能把形参的值反向地传送给实参。因此在方法调用过程中,形参的值发生改变,而实参中的值不会变化。
三、实战
实参如何将值传递给形参,形参又如何发生改变呢?接下来我们一起来看看吧!
3.1
package second;
public class Test {
public int returnMin(int m,int n) {
return Math.min(m,n); // m和n是形参,函数返回较小值
}
public static void main(String[] args) {
int x = 69;
int y = 96; // x和y是实参
Test t = new Test();
int i = t.returnMin(x,y); //将实参传递给形参
System.out.println(i);
}
}
3.2
package second;
public class Class2 {
public int add(int x) { //形参
x += 30;
System.out.println("形参 x 的值:"+x);
return x;
}
public static void main(String[] args) {
int x = 150; //实参
System.out.println("调用 add() 方法之前 x 的值:"+x);
Class2 t = new Class2();
int i = t.add(x); //将实参传递给形参
System.out.println("实参 x 的值:"+x);
System.out.println("调用 add() 方法的返回值:"+i);
}
}
小编有话说
迟到的圣诞快乐+提前的元旦快乐,祝大家每天都快快乐乐~以后我也不定期和大家分享一些冷门知识吧,显得小编有话说……(Q:为什么电脑从C盘开始?A:计算机诞生之初,数据存储主要靠软盘,软盘驱动器按照顺序占据了A和B盘的位置,后来随着硬盘的应用,就出现了C盘以及以后的盘符。)
编辑:玥怡居士|审核:世外居士