如何从Java的界面访问child的字段?

How to access child's field from the interface in Java?

Java 8 引入了 "default method" 允许描述方法的主体。

我想创建一个接口和两个 child 类。在接口 URL 中,我想要 getURL() 方法:

public interface URL {
    int getURL() {
        return this.myURL;
    } // obviously
}

和两个 child 类 我想定义我的URL 字段:

public class MyURL1 implements URL {
     private String myURL = "http://test1.com";
}

public class MyURL2 implements URL {
     private String myURL = "http://test2.com";
}

将由 getURL 返回。

Java可以吗?

你想要的方式:

public interface URL {
    int getURL() {
        return this.myURL;
    } // obviously
}

假设你有一个状态,这在接口中是不允许的,因此我认为你需要考虑使用抽象 类 来代替,例如:

public abstract class URL {

    private String myUrl;

    public URL(String url) {
       this.myUrl = url;
    }

    public String getURL() {
        return this.myURL;
    } // obviously
}

然后

public class MyURL1 implements URL {
      public MyURL1() {
         super("http://test1.com");
      }
}

不,这在 Java 中是不可能的。

下一个类似的东西是抽象的class:

abstract class UrlHolder {
    private String url;
    protected UrlHolder(String u) { url = u; }
    public String getUrl() { return url; }
}

然后

class UrlHolder1 extends UrlHolder {
    public UrlHolder1() {
        super("myurl1");
    }
}
class UrlHolder2 extends UrlHolder {
    public UrlHolder2() {
        super("myurl2");
    }
}