2014-04-06 35 views
1

是否有可能强制在类中的几个方法签名?类中几个方法的强制签名

比方说,我有Interface MyInterface的:

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

我想实现MyInterfaceClassMyInterface的方式,在每个MyInterfaceClass方法得到了相同的签名?

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中有数量未知的方法。

+0

所以你想有一个类,其中每个方法的签名与其实现的接口中的单个方法的签名相同?听起来像是一份反思我的工作...... – Azar

+0

如果唯一的区别是参数的长度,你可能会考虑一个可变参数参数。 – csmckelvey

+0

您需要编译错误?听起来像你需要在“编译器”区域玩耍。 –

回答

1

我不能确切地告诉你在这里之后?在Java中,方法的签名是由6个因子起来:

  1. 隐私级别(公共,私有,等...)
  2. 返回类型
  3. 方法名(帽大小写)
  4. 参数(类型和位置,method_a(INT一个,字符串b)!= method_a(字符串b,INT A))
  5. 检查例外列表

如果你想实现方法的接口,你米ust符合所有这些标准,包括名称。此外,在一个类中,你只能实现一个接口的方法ONCE。如果你尝试使用相同的参数,名称,隐私级别等实现一个方法...两次,那么你的类将不会编译。如果你在同一个类中实现了两次,java虚拟机如何知道调用哪个方法?

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

+0

我想创建一个类,它的方法遵循规则:它们具有相同的隐私级别,相同的返回类型,相同的参数,相同的已检查的例外列表。它们之间唯一不同的是名称...... – hudac

+1

你可以完全实现具有这些相似性的多种方法。但是,如果你想实现一个方法没有接口,那么你必须有相同的参数,异常,返回类型(等)和相同的名称作为接口方法。 –

0

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

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