在您第一次使用在Java中实现接口的类并定义该接口的方法之后,您是否仍需要在实现该接口的所有其他类中定义该接口的方法,或者您是否可以实现接口并开始使用接口的方法与该类中的对象,即使该接口的方法未在该类中明确定义?
答案 0 :(得分:2)
你需要单独为每个类实现方法,但是比如说你有一个接口“MyInterface”,它有一个实现它的类“MyFirstClass”及它的方法。如果类“MySecondClass”实现了接口,那么它也需要实现这些方法。但是如果“MySecondClass”扩展“MyFirstClass”,它将不需要实现接口方法,因为它们已经在“MyFirstClass”中实现。
答案 1 :(得分:2)
例如,您有一个界面
public Interface A
{
int add (int a , int b);
int subtract (int a , int b)
}
//现在你有一个实现A接口的类
public class AImpl implements A{
@override
public int add ()
{
return a+b;
}
@override
public int subtract(){
//do something
}
}
现在您要编写一个使用与A接口类似的方法的类C,您可以根据需要实现该接口并为其编写实现,也可以扩展AImpl类并使用已实现的方法(如果它)适合您的需要。实现接口的类应始终字面实现该接口的所有方法。
答案 2 :(得分:1)
如果类不是已经实现接口的类的子类,则可以再次定义所有方法。但是,如果一个类是已经实现了接口的类的子类,则除非要覆盖该行为,否则无需再次定义方法。
答案 3 :(得分:1)
所以你有
public class Interface {
public void someMethod();
}
和实施
public class InterfaceImpl implements Interface {
public void someMethod() {
System.out.println("Hello, world");
}
}
您可以继承InterfaceImpl
并使用子类'inherited someMethod()
。如果InterfaceImpl
是抽象的,那么它的子类需要具体。
如果你有另一个与InterfaceImpl
无关的类(例如没有继承),那么是的,其他类必须实现someMethod()
来满足Interface
的合同。
答案 4 :(得分:0)
不考虑default methods,
对于非抽象类或其祖先类之一实现的每个接口,该类或其祖先类之一应该定义该接口中的所有方法。
考虑默认方法,
对于非抽象类或其祖先类之一实现的每个接口,该类或其一个或一个祖先类应该定义该接口中的所有方法。如果该非抽象类或其一个或一个祖先类未定义该方法,则接口应通过默认方法功能定义该方法。