“商苑面馆:Java方法重载”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
面馆案例
完整代码
 
第65行: 第65行:
 
==完整代码==
 
==完整代码==
  
  <nowiki>public class Noodle {
+
  <nowiki>ppackage entity;
 +
 
 +
public class Noodle {
 
//成员变量
 
//成员变量
 
//名称
 
//名称
private String name;
+
private String name;
//价格
+
//价格
private double price;
+
  private double price;
//数量
+
//数量
private int num;
+
  private int num;
 
 
 
/*构造方法*/
 
/*构造方法*/
第78行: 第80行:
 
 
 
}
 
}
 
 
public Noodle(String name,double price,int num){
 
public Noodle(String name,double price,int num){
 
this.name = name;
 
this.name = name;
第85行: 第86行:
 
}
 
}
 
//成员方法
 
//成员方法
//增加订单;
+
   
public void add(int num){
+
        //返回订单信息
+
public String toString(){
this.num += num;
+
          return "名称:" +this.name+"价格:"+
+
              this.price + "数量: " + this.num;
}
+
        }
//削减订单;
 
public void reduce(int n){
 
    this.num = this.num -n;
 
}
 
 
public String getName(){
 
public String getName(){
 
return this.name;
 
return this.name;
第104行: 第101行:
 
return this.num;
 
return this.num;
 
}
 
}
//写方法
 
 
public boolean setName(String s){
 
public boolean setName(String s){
 
this.name = s;
 
this.name = s;
第116行: 第112行:
 
     this.num = n;
 
     this.num = n;
 
     return true;
 
     return true;
    }
 
 
 
    public String toString(){
 
      return "名称:" +this.name+"价格:"+
 
              this.price + "数量: " + this.num;
 
 
     }
 
     }
 
     public boolean setInfo(String name){//设置名称
 
     public boolean setInfo(String name){//设置名称
第138行: 第129行:
 
     }
 
     }
 
public static void main(String[] args) {
 
public static void main(String[] args) {
// TODO Auto-generated method stub
+
Noodle n2 = new Noodle("炸酱面",12,3);
       
+
         System.out.println("您订的面是"+n2.getName());            
        Noodle n2 = new Noodle("炸酱面",12,3);
+
         n2.setName("老北京炸酱面");      
         n2.setInfo("老北京炸酱面");
+
       
         System.out.println(n2.toString());
+
         System.out.println("订单变更:");
         n2.setInfo("老济南炸酱面", 10);
+
         System.out.println("您订的面是"+n2.getName());
         System.out.println(n2.toString());
+
       
         n2.setInfo("宫廷炸酱御面", 18, 3);
+
        //方法的重载
         System.out.println(n2.toString());
+
         n2.setInfo("老济南炸酱面");
 +
         n2.setInfo("老济南炸酱面",12);
 +
        n2.setInfo("老济南炸酱面",12,3);
 
          
 
          
 
}
 
}

2019年5月16日 (四) 14:50的最新版本

区分重载方法的关键因素

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

  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);
        
	}

}