Java 如果不调用类抽象,我们可以从接口实现少数(不是全部)方法吗?
假设我们有一个包含10个方法的接口,但在一个类中只实现了其中的5个。那么这个类应该是抽象的。有没有办法在不抽象的情况下实现这样一个类?没有。实现不完整的类必须声明为抽象类。它不能直接实例化,但可以作为子类构建的公共基础 所有这些的要点是,编译器可以确保在对象上调用方法(由接口定义)时,该方法实际存在。这是Java强大类型化方法的一部分Java 如果不调用类抽象,我们可以从接口实现少数(不是全部)方法吗?,java,abstract-class,Java,Abstract Class,假设我们有一个包含10个方法的接口,但在一个类中只实现了其中的5个。那么这个类应该是抽象的。有没有办法在不抽象的情况下实现这样一个类?没有。实现不完整的类必须声明为抽象类。它不能直接实例化,但可以作为子类构建的公共基础 所有这些的要点是,编译器可以确保在对象上调用方法(由接口定义)时,该方法实际存在。这是Java强大类型化方法的一部分 Java确实有“可选方法”的概念,但这是相当非正式的:您必须提供一个抛出不支持的操作异常的虚拟实现。如果类实现了接口,它将保证接口中的所有方法都将实现。也就是说,
Java确实有“可选方法”的概念,但这是相当非正式的:您必须提供一个抛出不支持的操作异常的虚拟实现。如果类实现了接口,它将保证接口中的所有方法都将实现。也就是说,如果您不想定义该方法的内容,则始终可以抛出UnsupportedOperationException:
public void cats(){
throw new UnsupportedOperationException();
}
简言之,没有不声明在您实现的接口中定义的方法的方法。但是有一些方法可以解决这个问题,不管这些方法多么不正式。您必须实现所有接口方法。如果您的类是抽象的,那么创建具体子类的人必须实现这些方法。“但是,在不调用类抽象的情况下仍然存在”不是真的。为什么不直言不讳呢?顺便说一句,这不是我们编造的。它实际上与Iterator.remove()一起在API中使用(参见文档)。