能不能有一个实现了接口的类,在这个类的实例化过程中选择是否使用接口中的方法?因此具有使用接口的对象 A 和不使用接口的对象 B。
谢谢
更新:
假设你有一个 Professor 类,并且这个类实现了一个名为 Employer 的接口,该接口具有employ(rAssist x) 抽象方法。
现在我想从实现此接口的教授类中实例化 2 个对象对象 A - 教授可以雇用研究助理,对象 B - 教授不能雇用研究助理。
能不能有一个实现了接口的类,在这个类的实例化过程中选择是否使用接口中的方法?
不,如果类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
whiley
不支持。但请注意...
在编译时y.interfaceMethod
不会阻止使用 of ,即类型系统不会强制执行。
使用此解决方案,您实际上是在创建一个(匿名)子类并将MyClass
其实例分配给y
.
您的意思是您希望 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();
}
}
不,这不是Interface
.
一个Interface
保证实现将实现它的签名的合约
接口的思想是为实现接口的类建立一个义务。如果您有要求,您可以使用 java.lang.reflect.Method 反射类在运行时更改方法的可见性。然而,这不是一个干净的方式。
1. Interfaces
在 Java 中引入是因为Java中不允许多重继承。
2.但就Design Pattern
用途而言,以下是..
- 到implement certain Roles
。
将Dog视为Super 类,但Pet dog 和 Wild dog 可以是接口,可以通过 Dog 类的 Sub Classes 来实现。
- 使用时Behaviors keeps changing
。
考虑你有一个类绘图,并且在其中绘制方法(),现在绘制可以是描边、着色等......你必须将这些行为封装在接口或抽象类中。