商苑面馆:Java方法重载
来自CloudWiki
区分重载方法的关键因素
参数不同是区分重载方法的关键因素,参数不同主要包括以下方面的不同:
- 参数类型不同。例如:
public void method(String s); public void method(int s);
- 参数个数不同。例如:
public void method(String s,int i); public void method(String s);
- 参数顺序不同。例如:
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; }
完整代码:
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 void add(int num){ this.num += num; } //削减订单; public void reduce(int n){ this.num = this.num -n; } 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 String toString(){ return "名称:" +this.name+"价格:"+ this.price + "数量: " + this.num; } 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) { // 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()); } }