强制在接口中指定的方法仅在抽象类之外定义

时间:2012-07-25 10:13:46

标签: java abstract-class

这是我现在一直在摸不着头脑的人。

假设您要在接口中指定方法,但在实现级别之前不希望它实际定义。也就是说,您希望在接口中指定一个方法,以便在抽象类中定义它时,编译器将抛出错误。

public interface Thing{   

    public void method1();

    public void method2();

    //method3 should be implementation specific
    public void method3();

}

然后我有一个抽象类:

public abstract class BasicThing{

    @Override
    public void method1(){}

    @Override
    public void method2(){}

}

我的具体实施代码:

public class ThingImpl{

    @Override
    public void method3(){}

}

(顺便说一句,我知道以这种方式写它是有效的,但我想要这样做的理由是,如果我正在编写界面并将其传递给其他人然后传递它为了做最后的实现,我希望能够对它们强加额外的规范)

3 个答案:

答案 0 :(得分:4)

不,在编译时无法做到这一点。这也是一个非常奇怪的要求,IMO。

正如Sheik的回答所显示的那样,当然,你可以将抽象类合作。但是你不能强制一个抽象类来通过在接口中放置特定的东西来做到这一点。

您可能会尝试在单元测试中找到所有相关课程并验证您的要求。

答案 1 :(得分:1)

您应该在抽象的BasicThing类中使用抽象方法。

public abstract void method3();

答案 2 :(得分:0)

I think what u need is an anonymous inner-class implementations for your interface.

public class MyClass{

public void do something()
{
    Thing th1=new Thing(){

     @Override
     public void method3(){
     System.out.println("****My Method3***");
     }
    };

    th1.method3();
}
};