java基础笔记04浅析抽象类的作用
2017-08-11 本文已影响0人
三月有毒
抽象类是一种模板模式。抽象类为所有子类提供一个通用的模板,子类可以在这个通用的模板上进行扩展。
简单来说,就是继承的子类必须实现父类的属性和方法。抽象方法必须被子类实现。
如下图所例
抽象类可以包含属性,方法,构造方法。但是构造方法不能被用来new实例,只能用来被子类调用。
一般来说,抽象类限制比一般类大,一般类比抽象类更加灵活。当是在现实中很多父类中的方法是没有必要的,因为各个子类中的方法和父类必定不同,所以没有必要在父类里进行定义。
比如我们初中学习科学,到了高中科学被分为物理、化学、生物。我们不需要再去统一了解怎么学习科学这门知识,我们只需要知道物理、生物、化学每一门是怎么学的,而且每门的学习方法是我们必须要知道的,如同父类的抽象方法在子类中必须被实现。
当然,在这个例子中使用抽象类不是必须的,如果有人就是想知道科学的学习方法呢。我们在父类中加入这样一部分属性和方法也未尝不可。这时候我们可以用另一个例子,比如我们创建一个天气类,天气分为晴,雨,多云,台风,降雪等等,每个天气所造成的影响都不同。但我们怎么定义天气这个父类本身所造成的影响呢?太宽泛了,可能我们要去写几十上百条代码,最后的结果可能也并未有什么不同。但我们会很关心各种天气所带来的影响,如果一个地方的天气预报连这点实质性的东西都没有,那这个天气预报也不会有人看了。
另外,如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。