商苑面馆:Java方法重载

来自CloudWiki
跳转至: 导航搜索

区分重载方法的关键因素

参数不同是区分重载方法的关键因素,参数不同主要包括以下方面的不同:

  1. 参数类型不同。例如:
public void method(String s);
public void method(int s);
  1. 参数个数不同。例如:
public void method(String s,int i);
public void method(String s);
  1. 参数顺序不同。例如:
public void method(String s,int i);
public void method(int i,String s);

【注意】

参数顺序不同的情况中一定要注意指的是参数全体,而不是简单的参数名,参数名在参数中其实没有实际意义,只是一个代号。例如:

public void method(String s,int i);
public void method(String i,int s);

上面的例子是不属于顺序不同的,因为只是互换了参数的名字,参数的类型并没有互换。

面馆案例

如果在Noodle类里添加了如下方法,他们方法名相同,但是参数不同,我们就说它发生了重载

编写重载方法

     public boolean setInfo(String name){//设置名称
    	this.name = name;
    	return true;
    }
    public boolean setInfo(String name,double p){//设置名称和价格
    	this.name = name;
    	this.price = p;
    	return true;
    }
    public boolean setInfo(String name,double p,int n){//设置名称、价格和数量
    	this.name = name;
    	this.price = p;
    	this.num = n;
    	return true;
    }

在main方法中调用

public static void main(String[] args) {
		// TODO Auto-generated method stub
		        
        Noodle n2 = new Noodle("炸酱面",12,3);
        n2.setInfo("老北京炸酱面");
        System.out.println(n2.toString());
        n2.setInfo("老济南炸酱面", 10);
        System.out.println(n2.toString());
        n2.setInfo("宫廷炸酱御面", 18, 3);
        System.out.println(n2.toString());
        
	}

练习

利用重载的原理,编写重载方法showInfo((String name),showInfo(String name,double p),showInffo(String name,double p,int n), 分别实现只打印名称、打印名称和价格,打印名称、价格和数量等三个不同的功能。

完整代码

ppackage entity;

public class Noodle {
	//成员变量
	//名称
	 private String name;
		//价格
	  private double price;
		//数量
	  private int num;
	
	/*构造方法*/
	public Noodle(){
		
	}
	public Noodle(String name,double price,int num){
		this.name = name;
		this.price = price;
		this.num = num;
	}
	//成员方法
    
        //返回订单信息
	public String toString(){
       	    return "名称:" +this.name+"价格:"+
               this.price + "数量: " + this.num;
        }
	public String getName(){
		return this.name;
	}
	public double getPrice(){
		return this.price;
	}
	public int getNum(){
		return this.num;
	}
	public boolean setName(String s){
		this.name = s;
		return true;
	}
    public boolean setPrice(double p){
    	this.price = p;
    	return true;
    }
    public boolean setNum(int n){
    	this.num = n;
    	return true;
    }
    public boolean setInfo(String name){//设置名称
    	this.name = name;
    	return true;
    }
    public boolean setInfo(String name,double p){//设置名称和价格
    	this.name = name;
    	this.price = p;
    	return true;
    }
    public boolean setInfo(String name,double p,int n){//设置名称、价格和数量
    	this.name = name;
    	this.price = p;
    	this.num = n;
    	return true;
    }
	public static void main(String[] args) {
		Noodle n2 = new Noodle("炸酱面",12,3);
        System.out.println("您订的面是"+n2.getName());              
        n2.setName("老北京炸酱面");       
        
        System.out.println("订单变更:");
        System.out.println("您订的面是"+n2.getName());
        
        //方法的重载
        n2.setInfo("老济南炸酱面");
        n2.setInfo("老济南炸酱面",12);
        n2.setInfo("老济南炸酱面",12,3);
        
	}

}