Tag: 接口的

Java中的接口是什么?

就像这个问题的对应点:Java中的接口是什么?

我应该如何解释一个接口和一个抽象类的区别?

在我的一个采访中,我被要求解释一个接口和一个抽象类的区别。 这是我的回应: Java接口的方法是隐式抽象的,不能有实现。 Java抽象类可以有实现默认行为的实例方法。 在Java接口中声明的variables在默认情况下是final的。 抽象类可能包含非最终variables。 Java接口的成员默认是公共的。 一个Java抽象类可以拥有像private,protected等类成员的通常风味。 Java接口应该使用关键字“implements”来实现; Java抽象类应该使用关键字“extends”进行扩展。 一个接口只能扩展另一个Java接口,一个抽象类可以扩展另一个Java类并实现多个Java接口。 一个Java类可以实现多个接口,但它只能扩展一个抽象类。 不过,面试官不满意,告诉我这个描述代表“ 书本知识 ”。 他问我一个更实际的回答,解释什么时候我会通过一个接口select一个抽象类,用实际的例子 。 我哪里做错了?

Java中的抽象类

什么是Java中的“抽象类”?

何时使用抽象类或接口?

为什么创build抽象或接口类,或者什么时候应该使用抽象或接口类?

为什么我不能在Java界面中定义静态方法?

这是一个例子: public interface IXMLizable<T> { static T newInstanceFromXML(Element e); Element toXMLElement(); } 当然这是行不通的。 但为什么不呢? 其中一个可能的问题是,当你打电话时会发生什么: IXMLizable.newInstanceFromXML(e); 在这种情况下,我认为它应该只是调用一个空的方法(即{})。 所有的子类将被迫实现静态方法,所以在调用静态方法时,它们都会很好。 那为什么不可能呢? 编辑:我想我正在寻找比“因为这是Java的方式”更深的答案。 是否有一个特定的技术原因,为什么静态方法不能被覆盖? 也就是说,为什么Java的设计者决定让实例方法可以覆盖,而不是静态方法? 编辑:我的设计的问题是我试图使用接口来执行编码约定。 也就是说,界面的目标是双重的: 我希望IXMLizable接口允许我将实现它的类转换为XML元素(使用多态性,工作正常)。 如果有人想要创建一个实现了IXMLizable接口的类的新实例,他们总是会知道会有一个newInstanceFromXML(Element e)静态构造函数。 有没有其他的方法来确保这一点,除了在界面中留言? 编辑: 从Java 8开始,现在允许在接口中使用静态方法。