【发布时间】:2013-06-07 15:46:25
【问题描述】:
如何解决以下constructor overloading问题?这是一个面试问题,但我很想知道解决方案。
class Player
{
int nationalRank;
int internationalRank;
String name;
Player(String name, int nationalRank)
{
this.name= name;
this.nationalRank = nationalRank;
this.internationalRank=0;
}
Player(String name, int internationalRank)
{
this.name= name;
this.nationalRank = 0;
this.internationalRank=internationalRank;
}
}
这里,编译器会报错,因为两个构造函数的参数类型相同。但从逻辑上讲,两者是不同的。如何在不添加任何额外参数的情况下解决此问题?有没有专门针对这个的设计模式?
【问题讨论】:
-
给每个选项一个有意义的名字的静态工厂方法怎么样?
-
他们有相同的原型,不改变参数我看不出你怎么能这样做,你可以做什么?可以创建子类吗?
-
@Djon 是的,我想我可以创建子类。任何解决方案都是首选。
-
一个简单但不明确的解决方案是更改参数
(int,String)和(String,int)的顺序。 -
@TheNewIdiot 是的,但我认为这个解决方案在实际项目中不会受到青睐。
标签: java constructor overloading