在.net中,我们不允许在抽象类和接口中共享函数/方法.为什么他们不被允许?
在其他语言中也是如此.喜欢Java?
如果允许共享方法,可能会出现什么问题?
我刚刚在这里阅读了这篇文章:http://hamletdarcy.blogspot.com/2008/04/10-best-idea-inspections-youre-not.html,最后一点让我想到了我的代码,特别是建议:
世界上有什么公共方法对你的对象做了什么,它不依赖于对象中的任何字段?这肯定是代码味道.问题是检查的"自动修复"是应用static关键字.真是没有.这不是你想要做的.不依赖于对象状态的公共方法不可能是具有明确声明的章程的对象的一部分.它只是没有凝聚力,应该放在其他地方.所以:如果方法是私有的,接受自动修复,但如果方法是公共的,则不要.
有问题的代码本质上是一个对象变换器.它需要一个A类型的对象并将其转换为另一种类型.
我的层次结构是这样的:
接口ObjectTransformer - > GenericObjectTransformer
然后在这下面,GenericObjectTransformer由ObjectTransformerA和ObjectTransformerB扩展
现在,ObjectTransformerA和ObjectTransformerB都需要一些功能,但实际上并不依赖于GenericObjectTransformer的任何实例变量,因此它是GenericObjectTransformer中受保护的静态方法.
这违反了上述规则吗?显然这是受保护的而不是公开的,但它仍然是一种可以从类外部访问的方法,与类本身无关?
有什么想法吗?