这个问题有两个方面的原因:
1.由于Java中的类只能有一个父类,因此假如要使用基于类的动态代理,代理类必须继承一个类,
这就限制了被代理的类必须是单继承的。而且接口可能被多个类实现,这就是为使用基于接口的动态代理提供了更大的灵活性
2.接口在Java中具有更强的约束性,通过接口可以很好地定义和限制一组行为,这就是JDK动态代理只能代理实现接口的类的一个重要原因。
这个问题有两个方面的原因:
1.由于Java中的类只能有一个父类,因此假如要使用基于类的动态代理,代理类必须继承一个类,
这就限制了被代理的类必须是单继承的。而且接口可能被多个类实现,这就是为使用基于接口的动态代理提供了更大的灵活性
2.接口在Java中具有更强的约束性,通过接口可以很好地定义和限制一组行为,这就是JDK动态代理只能代理实现接口的类的一个重要原因。