如图,A中构造函数接受一个AI类型的data,然后把data的属性都复制到A中,但是在A的实例中访问AI的属性会报错。
至于为什么不直接A implements AI,是因为还有以下需求:
业务需求中A是作为一个基类的,通常不直接使用,需要子类继承来使用,如上图的B,C。而B,C也有属于自己的BI,CI(继承于AI)。如果每继承一次A都要implements一次未免也太麻烦了。
如图,A中构造函数接受一个AI类型的data,然后把data的属性都复制到A中,但是在A的实例中访问AI的属性会报错。
至于为什么不直接A implements AI,是因为还有以下需求:
业务需求中A是作为一个基类的,通常不直接使用,需要子类继承来使用,如上图的B,C。而B,C也有属于自己的BI,CI(继承于AI)。如果每继承一次A都要implements一次未免也太麻烦了。
13 回答12.8k 阅读
8 回答2.5k 阅读
2 回答5k 阅读✓ 已解决
7 回答1.9k 阅读
3 回答2.2k 阅读✓ 已解决
5 回答805 阅读
3 回答1.1k 阅读✓ 已解决
你搞错了一件事,类
A
和接口AI
没有任何关系,某个接口不会因为名称正好比某个类结尾多了个I
就自动成为那个类的接口。如果你喜欢先定义接口,再实现类,确实是要每次都手动implement——这里指的是把接口的所有属性都手动声明一遍。我建议你直接类继承下来就好了。举个例子:
或
像第二个例子这样,与类同名的接口才有关系。