为什么要用抽象类和抽象方法,特别是抽象方法,为什么抽象方法在抽象类中没有实现,而在子类中去实现,我觉得是多此一举,在子类中直接定义不就完了?

解决方案 »

  1.   

    既然认为世界是由对象组成的,那么那些实际抽象的东西当然也是对象,只不过它们是概念,无法实现,所以相应的有个抽象类来对应,我觉得还是很正常的逻辑吧。
    至于抽象方法还是有作用的,从设计的角度看,它很明确的告诉它的子类需要必须做什么事,这样也是一种约束,就好像你的程序只允许别人输入一定大小的值,否则就抛出customException一样。从代码编写角度,它让在代码中处理同一类不同代对象时更好操作。
      

  2.   

    抽象类的作用:
    1.首先可以有效地控制类结构的复杂程度,避免类结构的臃肿,一般情况下,树型结构的类图要比网状结构的类图层次分明。从代数系统的观念出发,有抽象类的类层次结构是一种接近完美的功能集合的划分。
    2.抽象类能够提供一个统一的接口。接口这种概念是实现许多优秀设计的关键,一个父类的指针或者说是引用可以指向任何子类的对象,这种访问兼容性对于代码的优雅性至关重要。
    3.对于面向对象的分析和设计而言,一开始着手就考虑细节是不应该的。抽象方法的对于分析和设计重要意义在于:你可以事先声明方法,并赋予其含义,然后可以考虑各个方法的关系。抽象类能够使你的程序具有更高程度的抽象性。抽象类的存在使得你只要写1次应用,而不需要单独对你的10个子类都写一遍应用。
    4.还有很多,你可以看一下<<设计模式>>,并且动手写一些高度抽象的程序,你将明白抽象类的真谛