use*_*269 4 java abstract-class interface
在一次采访中,有人要求我证明何时选择界面以及何时选择抽象类以及在哪种情况下你将从两个中选择一个..我已经提出了我的界面分析,那就是......
接口是类型声明或定义多方之间合同的最佳选择.如果多个程序员在项目的不同模块中工作,他们仍然通过定义接口而不是等待实际实现准备就绪来使用彼此的API.
这为我们在编码和开发方面带来了很多灵活性和速度.使用Interface还可以确保最佳实践,例如"为接口编程而不是实现",从而产生更灵活和可维护的代码.
但是我没有充分的理由来证明抽象类的合理性,请指教..!
La *_*bla 27
抽象类用于在一个实体下对许多具体类进行分组.
例如,采用抽象类Animal.动物不是具体的东西.它是一群动物.但是他们都分享某些特定的东西,例如,每个都有一个speak()选项(好吧,除了鱼和排序).但每一个都以不同的方式实现它 这样你就可以覆盖不同的方法,例如sleep() or breath()常见的(再次,鱼是不同的:)).
另一方面,接口更直接地定义了"动作".这就是为什么Java中的大多数(如果不是全部)接口都以'able'结束(Comprable,Serializable ......)通过实现接口,你告诉其他程序员或曾经使用过你的代码,这个类可以做到这一点,这个.例如,狗不是,Animable.
基本上,总结一下,我认为最好的定义就是这个.当你有一个类A is kind of B和接口时,使用抽象类A can do B.
希望有所帮助.