方法
方法是类或对象的行为特征的抽象,是类或对象最重要的组成部分。
方法不能独立存在,方法必须属于类或对象。因此,如果需要定义方法,则只能在类体内定义。
¯使用static修饰方法
µ用static修饰的方法属于这个类,因此即使没有创建该类的具体对象,类中用static修饰的方法也会存在。
类名.方法名([实参表]);
µ静态方法(类方法)属于类,或者说属于该类的所有对象所共有。因此,若创建了某个类的具体对象后,也可以通过对象名来调用类方法。
对象名.静态方法名([参数表]);
µ不使用static修饰的方法属于该类的对象,不属于类。因此,方法必须使用对象做调用者:
需注意:
ü方法不能独立定义,只能在类体里定义。
ü从逻辑意义上看,方法要么属于类,要么属于对象。因此,执行方法必须使用类或对象作为调用者。
ü同一个类中的方法相互调用时,如果被调用方法是普通方法,则默认使用this 作为调用者,如果被调方法是静态方法,则默认使用类作为调用者
¯方法的参数传递
如果定义方法时包含了形参,则调用方法时必须给这些形参指定参数值,调用方法时实际传给形参的参数值也被称为实参。
注意:Java里方法的参数传递方式为值传递---将实际参数值的副本(复制品)传入方法内,而实际参数值本身不会受到任何影响。
¯形参长度可变的方法
从JDK1.5以后,Java允许定义形参长度可变的参数,从而允许为方法指定数量不确定的形参。
µ形参长度可变的方法定义:如果在定义方法时,在最后一个形参的类型后增加三点…,则表明该形参可以接受多个参数值,多个参数值被当成数组传入。
例4.9 形参长度可变的方法outClassInfo。
public static void outClassInfo(String cname,String…sname){
//在方法体内将参数sname当成是数组
}
µ在方法体内,将参数sname当成数组处理
for (String student : sname){
System.out.println(student);
}
注意:
ü以可变个数形参来定义方法
public static void outClassInfo(String cname , String... sname);
ü采用数组形参来定义方法
public static void outClassInfo(String cname , String[] snames)
这两个方法签名的效果虽然一样,但还是有区别的:
ü调用可变形参的方法,更加简洁;
ü调用数组形参来声明的方法,必须传给该形参一个数组,outClassInof(“09软件”,new String[]{“王五”,“李四”});
ü数组形式的形参可以处于形参列表的任意位置,但个数可变的形参只能位于形参列表的最后。
¯递归方法
如果一个方法定义中直接或间接调用它本身,就是方法的递归调用。
例4.10 编写程序,计算10的阶乘。
public static long calc(int n){
if(n==1){
return 1;
}else{
return n*calc(n-1);
}
}
递归方法一般由两部分组成:
递归体:递归的方式
递归出口:递归终止的条件
¯方法的重载
Java语言允许在一个类中定义几个同名的方法,但要求这些方法具有不同的参数特征,这种做法称为方法的重载(overloaded)。不同的参数特征包括:
ü参数个数:int GetSort(int x); int GetSort(int x,int y);
ü参数类型:int GetSort(int x); int GetSort(double x);
ü参数次序:int GetSort(int x,double y);
int GetSort(double x,int y);
注意:返回值类型不是重载的依据。
µ重载方法的调用:当类中有多个重载的方法,调用该类的某个重载方法时,Java能够根据实参表的不同区分实际调用的是哪一个方法。
例4.12 方法的重载。
Overload ol=new Overload();
ol.test(); //调用无参数的test()
ol.test(“hello”); //调用带一个字符串参数的test()
例4.13 重载方法中有一个带可变长度的形参。
public void test(String msg);
public void test(String… books);
则,olv.test(); //调用test(String… books);
olv.test(“aa”,”bb”); //调用test(String… books);
olv.test(“aa”); //调用test(String msg);
如只传入一个参数,又需要调用参数长度可变的方法,则可采用如下调用形式:olv.test(new String[]{“aa”});
分享到:
相关推荐
第1章 课程介绍第2章 一面上半场——项目业务架构介绍第3章 一面下半场——项目业务问题解决第4章 二面基本——扎实的基础能力第5章 二面进阶——应用程序高性能第6章 二面深入——微服务和架构认知第7章 三面上半场...
第6堂课 面向对象编程 155 第7堂课 字符串处理 189 第2部分 提高篇 第8堂课 类的继承与多态特性 219 第9堂课 其他类特性与异常处理 257 第10堂课 swing编程基础 283 第11堂课 多线程编程 319 第12堂课 事件...
完整版 Java基础教程 Java入门教程 Java语言程序设计 第6章 面向对象基础(共44页).ppt 完整版 Java基础教程 Java入门教程 Java语言程序设计 第7章 面向对象高级特性(共79页).ppt 完整版 Java基础教程 Java入门...
Java基础精品课09-方法补充录屏6.作业第4题.mp4
java java学习 java自学 java入门
java java学习 java自学 java入门
Java基础精品课09-方法补充录屏7.第二批作业1,6.mp4
优质java课件 java程序设计教程(第6版)01.计算机系统概述(共42页).ppt 优质java课件 java程序设计教程(第6版)02.数据与表达式(共62页).ppt 优质java课件 java程序设计教程(第6版)03.使用类和对象(共49页...
优质java课件 java程序设计教程(第6版)01.计算机系统概述(共42页).ppt 优质java课件 java程序设计教程(第6版)02.数据与表达式(共62页).ppt 优质java课件 java程序设计教程(第6版)03.使用类和对象(共49页...
优质java课件 java程序设计教程(第6版)01.计算机系统概述(共42页).ppt 优质java课件 java程序设计教程(第6版)02.数据与表达式(共62页).ppt 优质java课件 java程序设计教程(第6版)03.使用类和对象(共49页...
优质java课件 java程序设计教程(第6版)01.计算机系统概述(共42页).ppt 优质java课件 java程序设计教程(第6版)02.数据与表达式(共62页).ppt 优质java课件 java程序设计教程(第6版)03.使用类和对象(共49页...
优质java课件 java程序设计教程(第6版)01.计算机系统概述(共42页).ppt 优质java课件 java程序设计教程(第6版)02.数据与表达式(共62页).ppt 优质java课件 java程序设计教程(第6版)03.使用类和对象(共49页...
优质java课件 java程序设计教程(第6版)01.计算机系统概述(共42页).ppt 优质java课件 java程序设计教程(第6版)02.数据与表达式(共62页).ppt 优质java课件 java程序设计教程(第6版)03.使用类和对象(共49页...
《学通Java Web的24堂课》.(陈丹丹,卢瀚).[PDF]&ckook;《学通Java Web的24堂课》.(陈丹丹,卢瀚).[PDF]&ckook;
优质java课件 java程序设计教程(第6版)01.计算机系统概述(共42页).ppt 优质java课件 java程序设计教程(第6版)02.数据与表达式(共62页).ppt 优质java课件 java程序设计教程(第6版)03.使用类和对象(共49页...
第六天:类 第七天:对象的出生 第八天:类与类继承 第九天:具体到抽象的升华 第10天:权限内部类包 第11天:API类 第12天:字符串王者地位 第13天:算法工具类包装类 第14天:正则及其他类 第15-18天:数组到集合 ...