在类中强制签名几个方法

时间:2014-04-06 13:57:03

标签: java inheritance interface abstract-class

是否有可能在课堂上强制签名几个方法?

我们说我有Interface MyInterface:

public interface MyInterface
{
    public void method(int a);
}

我希望在MyInterface课程中实现MyInterfaceClassMyInterfaceClass中的每个方法都有相同的签名?

public class MyInterfaceClass implements MyInterface
{
    public void method_A(int a) { /*something */ }
    public void method_B(int a) { /*something */ }
    public void method_C(int a, int b) { /*something */ } // ERROR cause of signature, won't compile
}

MyInterfaceClass中的方法数量未知。

2 个答案:

答案 0 :(得分:1)

我不能确切地说出你在这之后是什么?在java中,方法的签名由6个因素组成:

  1. 隐私级别(公共,私人等......)
  2. 返回类型
  3. 方法名称(上限敏感)
  4. 参数(类型和位置,method_a(int a,String b)!= method_a(String b,int a))
  5. 已检查例外列表
  6. 如果您希望在界面中实现该方法,则必须匹配包含该名称的所有这些条件。此外,在类中,您只能实现接口的方法ONCE。如果您尝试使用相同的args,名称,隐私级别等实现一个方法...两次,那么您的类将无法编译。如果你在同一个类中实现了两次,java虚拟机将如何知道调用哪个方法?

    为什么要在一个类中实现两次相同的方法?也许你正试图改进你的设计,但是你提出了错误的问题?

答案 1 :(得分:0)

在上面的代码示例中,MyInterfaceClass不能编译的唯一原因是你没有定义方法(int a)。与method_C无关。

当您采用接口时,必须实现接口中的每个方法(除非您正在创建抽象类)。