面向对象的类接口

时间:2015-08-18 03:03:34

标签: java oop methods

在您第一次使用在Java中实现接口的类并定义该接口的方法之后,您是否仍需要在实现该接口的所有其他类中定义该接口的方法,或者您是否可以实现接口并开始使用接口的方法与该类中的对象,即使该接口的方法未在该类中明确定义?

5 个答案:

答案 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

对于非抽象类或其祖先类之一实现的每个接口,该类或其祖先类之一应该定义该接口中的所有方法。

考虑默认方法,

对于非抽象类或其祖先类之一实现的每个接口,该类或其一个或一个祖先类应该定义该接口中的所有方法。如果该非抽象类或其一个或一个祖先类未定义该方法,则接口应通过默认方法功能定义该方法。