4.方法 ●我们已经知道一个类的类体由两部分组成: 变量的定义和方法的定义。方法的定义包 括两部分:方法声明和方法体 Define a method Invoke a method method A return value type method name formal header atic int max(int numl int num2)[ int z max(x, int result method actual parameters body if(numl num2) parameter list (arguments) esult numl return value result nu return result
4.方法 ⚫我们已经知道一个类的类体由两部分组成: 变量的定义和方法的定义。方法的定义包 括两部分:方法声明和方法体。 public static int max(int num1, int num2) { int result; if (num1 > num2) result = num1; else result = num2; return result; } modifier return value type method name formal parameters return value method body method header parameter list Define a method Invoke a method int z = max(x, y); actual parameters (arguments)
方法参数在整个方法内有效,方法内定义的局部变量从它定乂的位置之后开始 有效。如果局部变量的定义是在一个复合语句中,那么该局部变量的有效范围 是该复合语句,即仅在该复貪语句中有效,如果局部变量的定义是在一个循环 语句中,那么该局部变量菂有效范围是该循环语句,即夜在该循环语句中有效 class A[ void fOt int ma10sumO fm>9) intz=10;∥z仅在该复合语句里有效 z=2*m+z. for(int i=o i <m, i++R sum=sumtI 历i仅在该循环语句里有效 msum;∥合法 z=i+sum,∥l法
⚫ 方法参数在整个方法内有效,方法内定义的局部变量从它定义的位置之后开始 有效。如果局部变量的定义是在一个复合语句中,那么该局部变量的有效范围 是该复合语句,即仅在该复合语句中有效,如果局部变量的定义是在一个循环 语句中,那么该局部变量的有效范围是该循环语句,即仅在该循环语句中有效 . class A{ void f(){ int m=10,sum=0; if(m>9){ int z=10; //z仅在该复合语句里有效 z=2*m+z; } for(int i=0;i<m;i++){ sum=sum+i; //i仅在该循环语句里有效 } m=sum; //合法 z=i+sum; //非法 } }
5方法重载 ●方法重载的意思是:一个类中可以有多个 方法具有相同的名字,但这些方法的参数 必须不同,即或者是参数的个数不同,或 者是参数的类型不同
5.方法重载 ⚫方法重载的意思是:一个类中可以有多个 方法具有相同的名字,但这些方法的参数 必须不同,即或者是参数的个数不同,或 者是参数的类型不同
class area t float getArea(float r i return 3. 14f*r*r; double getArea(float x, int y) i return X'y float getArea(int x, float y) i return xy double getArea(float x, float y, float z) i return (x'x+y*y+*z)2.0
class Area { float getArea(float r) { return 3.14f*r*r; } double getArea(float x,int y) { return x*y; } float getArea(int x,float y) { return x*y; } double getArea(float x,float y,float z) { return (x*x+y*y+z*z)*2.0; } }
public class Ambiguous Overloading i public static void main(string[] args)[ System. out. println (max(1, 2))i public static double max(int numl, double num2)t if (numl> num2) return numl; else return num2; public static double max(double numl int num2)( if(numl> num2) return num1 else return num2;
public class AmbiguousOverloading { public static void main(String[] args) { System.out.println(max(1, 2)); } public static double max(int num1, double num2) { if (num1 > num2) return num1; else return num2; } public static double max(double num1, int num2) { if (num1 > num2) return num1; else return num2; } }