接口用法

时间:2012-07-30 05:16:55

标签: java interface

你有一个实现接口的类,并选择在实例化这个类时是否使用接口中的方法吗?因此,具有使用接口的对象A和不使用它的对象B.

由于

更新

假设你有一个教授类,这个类实现了一个名为Employer的接口,它采用了(rAssist x)抽象方法。

现在我想要实现此接口的教授类中的2个对象实例化对象A - 教授可以聘请研究助理和对象B - 教授不能聘用研究助理。

5 个答案:

答案 0 :(得分:4)

  

你能有一个实现接口的类,并选择在实例化这个类时是否使用接口中的方法吗?

不,如果类C实现了接口,那么C的所有实例都将提供接口中声明的方法。

你能做的就是

class MyClass implements MyInterface {

    @Override
    void interfaceMethod() {
        System.out.println("Interface method");
    }
}

然后再做

MyClass x = new MyClass();

MyClass y = new MyClass() {
    @Override
    void interfaceMethod() {
        throw new UnsupportedOperationException();
    }
};

实际上,x支持使用interfaceMethody则不支持。但请注意......

  • 编译时不会阻止y.interfaceMethod的使用,即类型系统不会强制执行。

  • 使用此解决方案,您实际上正在创建MyClass的(匿名)子类,并将其实例分配给y

答案 1 :(得分:1)

你的意思是你想要A类和B类实现一个通用接口,但是你不想在B类中实现所有方法?

接口用简单的术语表示它是一种契约,所有实现它的类都应该遵循该契约。所以如果你想让B类实现接口,那么B类也应该遵循相同的契约。但如果您不想实施任何方法,您可以随时执行此操作。

class ISampleInterface {

  void sampleMethod();

  void optionalMethod();

} 

Class A implements ISampleInterface {

    void sampleMethod() {
      //Your Implementation
    }

    void optionalMethod() {
      //Your Implementation
    }
}



class B implements ISampleInterface {

    void sampleMethod() {
      //Your Implementation
    }

    void optionalMethod() {
      throw new UnsupportedMethodException();
    }
}

答案 2 :(得分:0)

不,这不是Interface的重点。

Interface是合同,保证实现将实现它的签名

答案 3 :(得分:0)

接口的想法是为实现接口的类建立义务。 如果您需要,可以使用java.lang.reflect.Method反射类在运行时更改方法的可见性。但是,这不是一个干净的方式。

答案 4 :(得分:0)

Java中引入了

1。 Interfaces,因为Java中不允许多重继承

2。但就Design Pattern而言,以下是用途..

- implement certain Roles

考虑 超级,但宠物狗和野狗可以是接口,     可以通过Dog Class of Dog class实现。

- Behaviors keeps changing时使用。

考虑你有类绘图,并且绘制方法(),现在绘画可以是抚摸,着色等... 您必须在Interface或Abstract类中封装此类行为。