Java面向对象(二)

本文深入探讨Java面向对象中的方法特性,包括方法的重载(overload)、可变参数(Varargs)的形参、方法参数的值传递机制以及递归方法的使用。内容涵盖了方法重载的判断标准,可变参数的声明与使用,值传递在基本类型和引用类型中的表现,以及递归方法在解决阶乘和斐波那契数列等问题中的应用。
摘要由CSDN通过智能技术生成

Java面向对象(二)

五、方法

5.1 方法的重载(overload)
  1. 定义:在同一个类中,允许定义多个相同名字的方法,只要参数列表(参数类型或者参数个数)是不同的

  2. 判断是否为方法重载:
    (1)同一个类,同样的方法名,不同的参数列表

    (2)与方法修饰符、方法返回值、形参名、方法体无关

    public class OverloadTest{
         
    	
        public void getSum(int a,int b){
         }
        
        public void getSum(int a,int b,int c){
         }
    
        public void getSum(double a,double b){
         }
        
        public void getSum(int a,double b){
         }
        
        public void getSum(double a,int b){
         }
        
    /*  不属于方法重载:与方法返回值类型无关  
    	public int getSum(int a,int b){      
            return 0;
        }
    */
    
    /*  不属于方法重载:与形参名称无关 
    	public void getSum(int m,int n){}
    */
        
    /*  不属于方法重载:与方法修饰符无关   
    	private void getSum(int a,int b){}
    */
        
    }
    
  3. 方法重载中一些特殊情况:

情况一:

public class OverloadTest {
   
    public static void main(String[] args){
   
        OverloadTest o = new OverloadTest();
        
        System.out.println(o.getSum(1,2));		// 输出3
        System.out.println(o.getSum(1.0,2.0));	// 输出3.0
        System.out.println(o.getSum(1.0,2));	// 输出3.0

    }
    public int getSum(int a,int b){
   
        return a + b;
    }
    public double getSum(double a,double b){
   
        return a + b;
    }

}

/* 	可以看到,我们并没有定义 getSum(double,int)类型的方法,但是 getSum(1.0,2)还是正常输出,没有报错。
	这里getSum(1.0,2)是调用了getSum(double a,double b)的方法,原因是实参2被自动转换为double类型并传递给这个方法。
	
	那为什么getSum(1,2)调用时不会使用getSum(double a,double b)方法?
	原因:
	其实 getSum(int a,int b) 和 getSum(double a,double b) 都是 getSum(1.0,2) 可能的匹配。调用方法时,Java编译器会查找最精确匹配的方法,因为方法 getSum(int a,int b) 比 getSum(double a,double b) 更精确,所以调用 getSum(1,2) 时使用的是getSum(int a,int b)。
	
*/

情况二:

public class Over
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值