“商苑面馆:Java方法重载”的版本间的差异
来自CloudWiki
(创建页面,内容为“==区分重载方法的关键因素== 参数不同是区分重载方法的关键因素,参数不同主要包括以下方面的不同: #参数类型不同。例…”) |
(→完整代码) |
||
(未显示同一用户的2个中间版本) | |||
第24行: | 第24行: | ||
==面馆案例== | ==面馆案例== | ||
如果在Noodle类里添加了如下方法,他们方法名相同,但是参数不同,我们就说它发生了重载 | 如果在Noodle类里添加了如下方法,他们方法名相同,但是参数不同,我们就说它发生了重载 | ||
+ | |||
+ | ===编写重载方法=== | ||
<nowiki> public boolean setInfo(String name){//设置名称 | <nowiki> public boolean setInfo(String name){//设置名称 | ||
第41行: | 第43行: | ||
}</nowiki> | }</nowiki> | ||
− | + | ===在main方法中调用=== | |
+ | |||
+ | <nowiki>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()); | ||
+ | |||
+ | }</nowiki> | ||
+ | |||
+ | ====练习==== | ||
+ | |||
+ | 利用重载的原理,编写重载方法showInfo((String name),showInfo(String name,double p),showInffo(String name,double p,int n), | ||
+ | 分别实现只打印名称、打印名称和价格,打印名称、价格和数量等三个不同的功能。 | ||
+ | |||
+ | ==完整代码== | ||
+ | |||
+ | <nowiki>ppackage entity; | ||
− | + | public class Noodle { | |
//成员变量 | //成员变量 | ||
//名称 | //名称 | ||
− | + | private String name; | |
− | + | //价格 | |
− | + | private double price; | |
− | + | //数量 | |
− | + | private int num; | |
/*构造方法*/ | /*构造方法*/ | ||
第56行: | 第80行: | ||
} | } | ||
− | |||
public Noodle(String name,double price,int num){ | public Noodle(String name,double price,int num){ | ||
this.name = name; | this.name = name; | ||
第63行: | 第86行: | ||
} | } | ||
//成员方法 | //成员方法 | ||
− | + | ||
− | public | + | //返回订单信息 |
− | + | public String toString(){ | |
− | + | return "名称:" +this.name+"价格:"+ | |
− | + | this.price + "数量: " + this.num; | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
public String getName(){ | public String getName(){ | ||
return this.name; | return this.name; | ||
第82行: | 第101行: | ||
return this.num; | return this.num; | ||
} | } | ||
− | |||
public boolean setName(String s){ | public boolean setName(String s){ | ||
this.name = s; | this.name = s; | ||
第94行: | 第112行: | ||
this.num = n; | this.num = n; | ||
return true; | return true; | ||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
public boolean setInfo(String name){//设置名称 | public boolean setInfo(String name){//设置名称 | ||
第116行: | 第129行: | ||
} | } | ||
public static void main(String[] args) { | 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()); | |
− | System.out.println(n2. | + | |
− | n2.setInfo(" | + | //方法的重载 |
− | + | n2.setInfo("老济南炸酱面"); | |
+ | n2.setInfo("老济南炸酱面",12); | ||
+ | n2.setInfo("老济南炸酱面",12,3); | ||
} | } |
2019年5月16日 (四) 14:50的最新版本
区分重载方法的关键因素
参数不同是区分重载方法的关键因素,参数不同主要包括以下方面的不同:
- 参数类型不同。例如:
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; }
在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); } }