我有两节课Parent
and Child
,而Parent
有一个需要 3 个参数的构造函数:
class Parent{
public Parent(String host,String path,int port){
}
}
现在我想要Child
构造函数只需要一个参数,然后我尝试做这样的事情:
class Child extend Parent{
public Child(String url){
String host=getHostFromUrl(url);
String path=....
String port=...
super(host,path,port);
}
}
但这是行不通的。
有办法解决吗?
顺便说一句,我无法访问Parent
class.
致电给super
must是构造函数主体中的第一条语句。从JLS 第 8.8.7 节 http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.8.7:
构造函数主体的第一条语句可以是对同一类或直接超类的另一个构造函数的显式调用(第 8.8.7.1 节)。
您只需要内联调用:
public Child(String url) {
super(getHostFromUrl(url), getPathFromUrl(url), getPortFromUrl(url));
}
或者,解析once更清晰的 URL 表示,并调用同一类中的另一个构造函数:
public Child(String url) {
this(new URL(url));
}
// Or public, of course
private Child(URL url) {
super(url.getHost(), url.getPath(), url.getPort());
}
(我还没有检查这些成员是否会为java.net.URL
- 这更多的是一种方法而不是细节。根据您的实际需求进行调整。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)