定义方法
声明成员方法可以定义类的行为,行为表示一个对象能够做的事情或者能够从一个对象取得的信息。类的各种功能操作都是用方法来实现的,属性只不过提供了相应的数据。一个完整的方法通常包括方法名称、方法主体、方法参数和方法返回值类型,其结构如图 1 所示。
成员方法一旦被定义,便可以在程序中多次调用,提高了编程效率。声明成员方法的语法格式如下:
[public|private|protected][static]<void|return_type><method_name>([paramList]) { // 方法体 }
注意:上述语法中,“[]”中的部分表示可以省略,竖线“|”表示“或”,例如 public|private,说明可以使用 public 或 private 关键字,但是两个关键字不能同时出现。
上述代码中一个方法包含 4 部分:方法的返回值、方法名称、方法的参数和方法体。其中 retum_type 是方法返回值的数据类型,数据类型可以是原始的数据类型,即常用的 8 种数据类型,也可以是一个引用数据类型,如一个类、接口和数组等。
除了这些,一个方法还可以没有返回值,即返回类型为 void,像 main() 方法。method_name 表示自定义的方法名称,方法的名称首先要遵循标识符的命名约定,除此之外,方法的名称第一个单词的第一个字母是小写,第二单词的第一个字母是大写,依此类推。
paramList 表示参数列表,这些变量都要有自己的数据类型,可以是原始数据类型,也可以是复杂数据类型,一个方法主要依靠参数来传递消息。方法主体是方法中执行功能操作的语句。其他各修饰符的含义如下。
- public、private、protected:表示成员方法的访问权限。
- static:表示限定该成员方法为静态方法。
- final:表示限定该成员方法不能被重写或重载。
- abstract:表示限定该成员方法为抽象方法。抽象方法不提供具体的实现,并且所属类型必须为抽象类。
注意:上面所提到的重写、重载和抽象类,会在后续的章节中详细讲解。
成员方法分为四类:无参无返回值、无参有返回值、有参无返回值和有参有返回值。
1.无参数无返回值
例1:输出一个由星号*和文字组成的图案。
public class VoidMethod { public void printStar() { System.out.println("*****************"); } public static void main(String[] args) { VoidMethod vm=new VoidMethod(); vm.printStar(); System.out.println("你好世界"); vm.printStar(); } }
例1的第2行定义了一个方法printStar,该方法的功能是输出一排星号*。第6行创建一个实例化对象vm,并在第7行通过该对象调用了pintStar方法,第8行输出文字,第9行继续调用。最终输出效果如下:
2.无参数有返回值
例2:定义一个方法,要求给定长方形的长和宽计算面积。
public class RetMethod { public int area() { int length=10; int width=5; int getArea=length*width; return getArea; } public static void main(String[] args) { RetMethod rm=new RetMethod(); System.out.println("面积="+rm.area()); } }
在例2的第2行中定义了一个方法area,该方法中有三个属性,分别是长、宽和面积,该方法有返回值为getArea,即返回属性getArea的值。在第9行创建实例化对象rm后,在输出语句中通过该对象调用area方法。最新效果如下:
有参数无返回值
例3:定义一个方法,要求对传递的两个整数进行比较,并将最大者输出。
public class GetMax { public void maxnum(int a,int b) { int max; if(a>b) { max=a; } else { max=b; } System.out.println("最大值是"+max); } public static void main(String[] args) { GetMax maxDemo=new GetMax(); maxDemo.maxnum(10, 2); } }
在例3的第2行定义了一个方法maxnum,不过该方法带有两个参数a和b,谁调用了该方法就传递两个值赋给其参数。第4行起对参数的值进行比较,并将最大者赋给变量max。第14行创建一个实例化对象maxDemo,第15行调用maxnum方法同时传递两个值。
最终效果如下:
有参数有返回值
例4:定义一个方法,要求计算给定数的阶乘。
public class FacNum { public int fac(int a) { int fac=1; for(int i=1;i<=a;i++) { fac*=i; } return fac; } public static void main(String[] args) { int b=3; FacNum facDemo=new FacNum(); System.out.println(b+"的阶乘="+facDemo.fac(b)); } }
例4的第2行定义了一个方法fac,该方法通过for循环实现了求一个数的阶乘。第5行代码也可以用另一种表达式:fac=fac*i。第11行通过定义变量b来设置需要求阶乘的数,第12行创建实例化对象facDemo,第13行的输出语句中调用了fac方法。最终效果如下:
评论