方法、方法重载和方法覆盖

1.方法  

 在Java中,方法就是用来完成解决某件事情或实现某个功能的办法。

    方法实现的过程中,会包含很多条语句用于完成某些有意义的功能——通常是处理文本,控制输入或者计算数值。我们可以通过在程序代码中引用方法名称和所需的参数,实现在该程序中执行(调用)该方法,方法一般都有一个返回值,用来作为事情的处理结果。

    方法的具体语法格式:

修饰符 返回值类型 方法名(参数类型 参数1,参数类型 参数2,······){

        执行语句

        ------

        return 返回值:

}

如下例1演示了方法的定义和调用

public class MethodDemo01 {
	public static void main(String[] args) {
		int area = getArea(3, 5); // 调用 getArea方法
		System.out.println(" The area is " + area);
	}

	// 下面定义了一个求矩形面积的方法,接收两个参数,其中x为高,y为宽
	public static int getArea(int x, int y) {
		int temp = x * y; // 使用变量temp记住运算结果
		return temp; // 将变量temp的值返回
	}
}

结果为:

在代码中,定义了getArea()方法用于求矩形的面积,参数x和y分别用于接收调用方法是传入的高和宽,return语句用于返回计算所得的面积,在main()方法中调用getArea()方法,获得矩形的面积,并将结果打印。

方法调用图解:

2.方法的重载

    Java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数必须不同,这就是方法的重载。

    假设要在程序中实现一个对数字求和的方法,由于参与求和数字的个数和类型都不确定,因此要针对不同的情况去设计不同的方法。如下例2是实现对两个整数相加、对三个整数相加以及对两个小数相加的功能。

public class MethodDemo02 {
	public static void main(String[] args) {
		// 下面是针对求和方法的调用
		int sum1 = add01(1, 2);
		int sum2 = add02(1, 2, 3);
		double sum3 = add03(1.2, 2.3);
		// 下面的代码是打印求和的结果
		System.out.println("sum1=" + sum1);
		System.out.println("sum2=" + sum2);
		System.out.println("sum3=" + sum3);
	}

	// 下面的方法实现了两个整数相加
	public static int add01(int x, int y) {
		return x + y;
	}
	// 下面的方法实现了三个整数相加
	public static int add02(int x, int y, int z) {
		return x + y + z;
	}
	// 下面的方法实现了两个小数相加
	public static double add03(double x, double y) {
		return x + y;
	}
}

结果为:

    程序需要针对每一种求和的情况都定义一个方法,如果每个方法的名称都不相同,在调用时就很难分清哪种情况该调用哪个方法。使用方法重载对其进行修改。

下面的三个方法互为重载关系

public static int add(int x,int y) {逻辑} //两个整数加法

public static int add(int x,int y,int z) {逻辑} //三个整数加法

public static int add(double x,double y) {逻辑} //两个小数加法

通过方法重载方式进行修改之后代码如下:

public class MethodDemo03 {
	public static void main(String[] args) {
		// 下面是针对求和方法的调用
		int sum1 = add(1, 2);
		int sum2 = add(1, 2, 3);
		double sum3 = add(1.2, 2.3);
		// 下面的代码是打印求和的结果
		System.out.println("sum1=" + sum1);
		System.out.println("sum2=" + sum2);
		System.out.println("sum3=" + sum3);
	}

	// 下面的方法实现了两个整数相加
	public static int add(int x, int y) {
		return x + y;
	}
	// 下面的方法实现了三个整数相加
	public static int add(int x, int y, int z) {
		return x + y + z;
	}
	// 下面的方法实现了两个小数相加
	public static double add(double x, double y) {
		return x + y;
	}
}

    运行结果与前一个代码运行结果相同。

    方法的重载与返回值类型无关,它只有两个条件,一是方法名相同,二是参数个数或参数类型不相同。

3.方法覆盖

    方法覆盖是指子类的方法名与父类的方法名完全相同,并且返回值类型、入口参数的数目、类型均相同,即在子类中重新改写了父类的同名方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章