Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 面向对象类接口_Java_Oop_Methods - Fatal编程技术网

Java 面向对象类接口

Java 面向对象类接口,java,oop,methods,Java,Oop,Methods,第一次使用在Java中实现接口的类并定义该接口的方法之后,您是否仍然需要在实现该接口的所有其他类中定义该接口的方法,或者您是否可以实现该接口并开始使用该类中的对象的接口方法,即使该类中未明确定义该接口的方法?您需要实现该接口的方法每个类都是单独的,但假设您有一个接口“MyInterface”,其中一个类“MyFirstClass”实现了它及其方法。如果类“MySecondClass”实现了接口,那么它也需要实现这些方法。但是如果“MySecondClass”扩展了“MyFirstClass”,它

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

您需要实现该接口的方法每个类都是单独的,但假设您有一个接口“MyInterface”,其中一个类“MyFirstClass”实现了它及其方法。如果类“MySecondClass”实现了接口,那么它也需要实现这些方法。但是如果“MySecondClass”扩展了“MyFirstClass”,它就不需要实现接口方法,因为它们已经在“MyFirstClass”中实现了。

您需要单独实现每个类的方法,但是例如,假设您有一个接口“MyInterface”,其中一个类“MyFirstClass”实现了它及其方法。如果类“MySecondClass”实现了接口,那么它也需要实现这些方法。但是如果“MySecondClass”扩展了“MyFirstClass”,就不需要实现接口方法,因为它们已经在“MyFirstClass”中实现了

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

考虑到默认方法

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

不考虑

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

考虑到默认方法


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

如果该类不是已实现该接口的类的子类,则必须重新定义所有方法。但是,如果类是已实现接口的类的子类,则无需再次定义方法,除非您希望重写该行为。

如果该类不是已实现接口的类的子类,则必须重新定义所有方法。但是,如果一个类是已经实现了接口的类的子类,则无需再次定义这些方法,除非您希望覆盖该行为。

因此您有

public class Interface {
    public void someMethod();
}
和一个实现

public class InterfaceImpl implements Interface {
    public void someMethod() {
        System.out.println("Hello, world");
    }
}
您可以子类化
InterfaceImpl
,并使用子类“继承的
someMethod()
”。如果
InterfaceImpl
是抽象的,那么它的子类需要是具体的

如果您有另一个类与
InterfaceImpl
(例如,未继承)无关,那么是的,该另一个类必须实现
someMethod()
,才能满足
接口的契约。

public class Interface {
    public void someMethod();
}
和一个实现

public class InterfaceImpl implements Interface {
    public void someMethod() {
        System.out.println("Hello, world");
    }
}
您可以子类化
InterfaceImpl
,并使用子类“继承的
someMethod()
”。如果
InterfaceImpl
是抽象的,那么它的子类需要是具体的


如果您有另一个类与
InterfaceImpl
无关(例如未继承),则是的,该另一个类必须实现
someMethod()
,以满足
接口的约定。

例如,您有一个接口

public Interface A 
{

    int add (int a , int b);

int subtract (int a , int b)

}
public class AImpl implements A{

@override

public int add ()
{
return a+b;
}

@override 
public int subtract(){

//do something

}

}
//现在您有了一个实现接口的类

public Interface A 
{

    int add (int a , int b);

int subtract (int a , int b)

}
public class AImpl implements A{

@override

public int add ()
{
return a+b;
}

@override 
public int subtract(){

//do something

}

}

现在,您想编写一个使用类似方法作为接口的类C,您可以根据需要实现该接口并为其编写实现,也可以扩展AImpl类并使用已经实现的方法(如果它适合您的需要)。实现接口的类应该始终真正地实现该接口的所有方法

例如,您有一个接口

public Interface A 
{

    int add (int a , int b);

int subtract (int a , int b)

}
public class AImpl implements A{

@override

public int add ()
{
return a+b;
}

@override 
public int subtract(){

//do something

}

}
//现在您有了一个实现接口的类

public Interface A 
{

    int add (int a , int b);

int subtract (int a , int b)

}
public class AImpl implements A{

@override

public int add ()
{
return a+b;
}

@override 
public int subtract(){

//do something

}

}
现在,您想编写一个使用类似方法作为接口的类C,您可以根据需要实现该接口并为其编写实现,也可以扩展AImpl类并使用已经实现的方法(如果它适合您的需要)。实现接口的类应该始终真正地实现该接口的所有方法