你有一个实现接口的类,并选择在实例化这个类时是否使用接口中的方法吗?因此,具有使用接口的对象A和不使用它的对象B.
由于
更新
假设你有一个教授类,这个类实现了一个名为Employer的接口,它采用了(rAssist x)抽象方法。
现在我想要实现此接口的教授类中的2个对象实例化对象A - 教授可以聘请研究助理和对象B - 教授不能聘用研究助理。
答案 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
支持使用interfaceMethod
而y
则不支持。但请注意......
编译时不会阻止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)
1。 Interfaces
,因为Java中不允许多重继承。
2。但就Design Pattern
而言,以下是用途..
- 至implement certain Roles
。
考虑狗 超级,但宠物狗和野狗可以是接口, 可以通过Dog Class of Dog class实现。
- 在Behaviors keeps changing
时使用。
考虑你有类绘图,并且绘制方法(),现在绘画可以是抚摸,着色等... 您必须在Interface或Abstract类中封装此类行为。