这是一个非常值得讨论的问题。

解决方案 »

  1.   

      我感觉应该放在Abstract 中,因为每个汽车的刹车行为都是一致的,所以没有没有必要放在Interface中在每个子类中实现一次刹车行为。个人观点,如果有不妥的地方,请高手指教。。
      

  2.   

    放Interface Brade里,除了Vehicle可实现外,非Vehicle也可实现
      

  3.   

    Interface是一个行为规范的抽象所以应该把刹车这个动作抽象为接口把刹车器抽象成类
      

  4.   

    我觉得应该放在抽象类中,因为刹车是汽车必须的,属于Vehicle,那么它必然有刹车行为。
      

  5.   

    其实java的命名规则差不多告诉我们了,接口的话用形容词,类的话用名词或动词。像普通的api中的接口Runnable,Comparable,Serializable...当然也不是绝对的。
    对于是用抽象类还是接口的问题,我理解就是如果是形容词声明为接口,名词动词声明为抽象类。
    对于这个问题可以这样设计:
    可以设计一个接口stoppable,然后有一个抽象类car实现这个接口,然后各种汽车继承这个抽象类。
    如果单独就是刹车行为的话,我觉得还是用抽象类比较好。
      

  6.   

    你如何解释List Map Set呢?觉得应该作成抽象类吗?
    概念,规范等等一般都可以抽象成接口。
    就刹车而言你用抽象类用接口都是可以的,看出发点是什么。
    为了刹车多态,采用接口,这是我个人推崇的。
    本来这题就没答案⋯⋯
      

  7.   

    放抽象类或弄成接口都可以,但凭你目前提供的这些信息也很难分清谁好谁差就看你的系统里目前或将来会不会出现不是 Vehicle,但是需要Brake的类,如果有,就要把Brake弄成接口
      

  8.   

    没有特定的context,两者我觉得都可以
      

  9.   

    我觉得 如果是工作中就怎么样都无所谓。
    只要把需求实现好了就行了,让这个项目尽快完成,让软件少出两个bug比啥都强。如果是做学问那就好好研究
      

  10.   

    比如,在赛车游戏里有一个功能叫“突然加速”
    只有高级跑车才有。
    那么这个动作肯定要被设计成接口。如果设计在Vehicle里边,就会产生软件污染。