面向对象是Java的一个重要的概念(万物皆对象),是不是很抽象?
@--图片来源于网络----------------------------------------------------------------------------------
学习面向对象前先了解下Java中方法的定义及使用
方法的主要功能是封装可以执行的一段代码, 这样不仅可以进行重复调用, 更
可以方便地实现代码的维护, 而本次使用的方法定义语法如下:
public static 返回值类型 方法名称(参数类型 参数变量,...){
方法体(本方法要执行的若干操作);
【return [返回值];】
}
在方法的定义格式中, 发现其有一个返问值类型, 指的是这个方法的返问结果。对于此返问值的类
型可以有以下两种:
1.直接设置.Java中的数据类型(基本数据类型、引用数据类型), 如果方法设置了返问值, 那么必
须使用return 语句返回与数据类型对应的数据;
2.方法没有返回值void,可以不使用return返回内容,但是可以使用return结束方法调用。
在Java中定义方法的要求很多,
而在本次所给出的方法定义格式有一个使用限制:“定义在主类中,并且由主方法直接
调用。”
范例:定义一个没有参数没有返问值的方法。
public class TestDemo{
public static void main(String[] args){
printInfo();//直接调用方法printInfo()
}
public static void printInfo(){//定义没有参数,没有返回值的方法
System.out.println("**************");
}
}
本程序首先在TestDemo主类中定义了一个printlnfo()方法,此方法主要是进行内容的输出,所以
在方法声明返问值时使用了void,然后在主方法之中调用了两次printlnfo()方法;
范例:定义一个有参数无返问值的方法。
public class TestMethod{
public static void main(Stirng args[]){
get(10.0);
get(-10.0);
}
//定义没有参数,没有返回值的方法
public static void get(double money){
if (money>0.0)
{
//现在已经给钱
System.out.println("可以进行支付!");
}else{
//没钱
System.out.println("你穷疯了,没钱还买什么东西!");
}
}
}
本程序定义了一个pay()方法, 而后在此方法中定义了一个参数, 并在方法中针对传入的内容进行判
断后输出。
范例:定义有返回值有参数的方法。
public class TestMethod1{
public static void main(String args[]){
//方法的返回值可以进行接收
int result = add(10,20);
System.out.println("计算结果:"+result);
//也可以直接将方法返回值进行输出
System.out.println(add(50,60));
}
public static int add(int x,int y){
return x+y;
}
}
如果此时方法有返问值声明,那么必须返回相应类型的数据;
如果没有返问值声明, 则可以直接编写return。而此类操作一般都会结合分支判断一起使用。
范例:利用return结束方法调用。
public class TestMethod2{
piblic static void main(String args[]){
set(100);
set(3);
set(10);
}
public static void set(int x){
if(x=3){
return; //方法后面的内容不执行了
}
System.out.println("x="+x);
}
}//只有在方法返回值类型为void的前提下才可以使用
方法的重载
方法的重载是指方法名称相同, 参数的类型或个数不同, 调用的时候将会按照
传递的参数类型和个数完成不同方法体的执行。
范例 :观察方法重载。
//方法重载
public class TestMethod3{
public static void main(String args[]){
//方法重载之后执行时会根据传入参数的类型或个数的不同调用不同的方法体
System.out.println("两个整形参数:"+add(10,20));//1号方法
System.out.println("三个整形参数:"+add(10,20,30));//2号方法
System.out.println("两个浮点型参数:"+add(10.2,20.3));//3号方法
}
//add()方法一共被重载三次
public static int add(int x,int y){//1号方法
return x+y;
}
//此时与之前的add()方法的参数个数不一样
public static int add(int x,int y,int z){//2号方法
return x+y+z;
}
//此时与之前的add()方法的参数类型不一样
public static double add(double x,double y){//3号方法
return x+y;
}
}
//在进行方法重载的时候一定要考虑到参数类型的统一,虽然可以实现重载方法返回不同类型的操作
//标准的开发来讲,建议所有的重载后的方法使用同一种返回值类型;
//方法重载的时候重点是根据参数类型及个数来区分不同的方法,而不是依靠返回值的不同来确定的。
方法重载的概念本身很容易理解,但是对于方法重载有以下两点说明。
• 在进行方法重载时一定要考虑到参数类型的统一,虽然可以实现重载方法返回不同类型的操作,
但是从标准的开发来讲,建议所有重载后的方法使用同一种返回值类型;
• 方法重载的时候重点是根据参数类型及个数来区分不同的方法,而不是依靠返回值的不同来确
定的。
方法的递归调用
递归调用是一种特殊的调用形式, 指的是方法自己调用自己的形式;
在进行递归操作时必须满足以下两个条件。
• 必须有结束条件;
• 每次调用时都需要改变传递的参数。
范例:递归调用。
//方法的递归调用
public class TestMethod4
{
public static void main(String args[]){
System.out.println(sum(100)); //1-100累加
System.out.println(sum(200)); //1-200累加
}
public static int sum(int num){ //最大的内容
if (num==1)
{ //递归的结果调用
return 1; //最终的结果返回了一个1
}
return num+sum(num-1);//递归调用
}
}
本程序的操作流程简单分析如下。
• 第l 次调用:return 100 + sum(99);
• 第2次调用:return 100 + 99 + sum(98);
• 倒数第2次调用:return 100 + 99 + ... + 3 + sum(2);
• 最后一次调用:return 100 + 99 + ... + 3 + 2 + 1。