类的设计中,两个重要结构之二:方法
方法:描述类应该具的功能。
- 比如:Math类:sqrt()\random() …
-
Scanner类:nextXxx() ...
-
Arrays类:sort() \ binarySearch() \ toString() \ equals() \ ...
- 1.举例:
- public void eat(){}
- public void sleep(int hour){}
- public String getName(){}
- public String getNation(String nation){}
-
- 方法的声明:权限修饰符 返回值类型 方法名(形参列表){方法体}
- 注意:static、final、abstract 来修饰的方法,后面再讲。
-
- 说明:
-
3.1 关于权限修饰符:默认方法的权限修饰符先都使用public
-
Java规定的4种权限修饰符:private、public、缺省、protected -->封装性再细说
-
3.2 返回值类型: 返回值 vs 没返回值
-
3.2.1 如果方法返回值,则必须在方法声明时,指定返回值的类型。同时,方法中,需要使用
-
return关键字来返回指定类型的变量或常量:“return 数据”。
-
如果方法没返回值,则方法声明时,使用void来表示。通常,没返回值的方法中,就不需要
-
使用return.但是,如果使用的话,只能“return;”表示结束此方法的意思。
-
3.2.2 我们定义方法该不该返回值?
-
① 题目要求
-
② 凭经验:具体问题具体分析
-
3.3 方法名:属于标识符,遵循标识符的规则和规范,“见名知意”
-
3.4 形参列表: 方法可以声明0个,1个,或多个形参。
-
3.4.1 格式:数据类型1 形参1,数据类型2 形参2,...
-
3.4.2 我们定义方法时,该不该定义形参?
-
① 题目要求
-
② 凭经验:具体问题具体分析
-
3.5 方法体:方法功能的体现。
- 方法的使用中,可以调用当前类的属性或方法
-
特殊的:方法A中又调用了方法A:递归方法。
-
方法中,不可以定义方法。
return关键字:
1.使用范围:使用在方法体中
2.作用:① 结束方法
-
② 针对于返回值类型的方法,使用"return 数据"方法返回所要的数据。
3.注意点:return关键字后面不可以声明执行语句。
1.方法的重载的概念
定义:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
*
总结:“两同一不同”:同一个类、相同方法名
参数列表不同:参数个数不同,参数类型不同
2.构成重载的举例:
举例一:Arrays类中重载的sort() / binarySearch();PrintStream中的println()
举例二:
//如下的4个方法构成了重载
public void getSum(int i,int j){
System.out.println(“1”);
}
public void getSum(double d1,double d2){
System.out.println("2");
}
public void getSum(String s ,int i){
System.out.println("3");
}
public void getSum(int i,String s){
System.out.println("4");
}
不构成重载的举例:
//如下的3个方法不能与上述4个方法构成重载
// public int getSum(int i,int j){
// return 0;
// }
// public void getSum(int m,int n){
//
// }
// private void getSum(int i,int j){
//
// }
3. 如何判断是否构成方法的重载?
严格按照定义判断:两同一不同。
跟方法的权限修饰符、返回值类型、形参变量名、方法体都没关系!
4.如何确定类中某一个方法的调用:
方法名 —> 参数列表
面试题:方法的重载与重写的区别?
throws\throw
String\StringBuffer\StringBuilder
Collection\Collections
final\finally\finalize
…
抽象类、接口
sleep() / wait()
可变个数形参的方法
1.使用说明:
- 1.jdk 5.0新增的内容
- 2.具体使用:
- 2.1 可变个数形参的格式:数据类型 … 变量名
- 2.2 当调用可变个数形参的方法时,传入的参数个数可以是:0个,1个,2个,。。。
- 2.3 可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载
- 2.4 可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不构成重载。换句话说,二者不能共存。
- 2.5 可变个数形参在方法的形参中,必须声明在末尾
- 2.6 可变个数形参在方法的形参中,最多只能声明一个可变形参。
2.举例说明:
public void show(int i){
}
public void show(String s){
System.out.println("show(String)");
}
public void show(String ... strs){
System.out.println("show(String ... strs)");
for(int i = 0;i < strs.length;i++){
System.out.println(strs[i]);
}
}
//不能与上一个方法同时存在
// public void show(String[] strs){
//
// }
调用时:
test.show(“hello”);
test.show(“hello”,“world”);
test.show();
test.show(new String[]{"AA","BB","CC"});