(java基础学习)abstract关键字和模板设计模式
(java基础学习)abstract关键字和模板设计模式
一、abstract(抽象)
1.问题解决:当父类的某些方法需要声明,但是又不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类。
当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法,这个方法就是抽象方法,用abstract来修饰该类就是抽象类。
例如 :把Animal做成抽象类,并让子类cat类实现
1 |
|
2.抽象类介绍
(1)用abstract关键字来修饰一个类时,这个类就叫抽象类
(2)用abstract关键字来修饰一个方法,这个方法就是抽象方法
3.抽象类细节
(1)抽象类不能被实例化
(2)抽象类不一定要包含abstract方法,也就是说,抽象类可能没有抽象方法
(3)一旦类包含了abstract方法,则这个类必须声明为abstract。
(4)abstract只能修饰类和方法,不能修饰属性和其他的。
(5)抽象类本质还是类,可以拥有任意成员(非抽象方法、静态属性等等)
(6)抽象方法不能有方法体。
(7)如果一个类继承了抽象类,那么它必须实现类的所有抽象方法,除非它自己也声明为abstract类。
(8)抽象方法不能使用private、final、static来修饰,因为这些关键字与重写相违背。
二、模板设计模式。
1.基本介绍
抽象类体现的就是一种模板设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造,但子类总体上会保留抽象类的行为方式。
2.抽象设计能解决的问题
(1)当功能内部一部分实现是确定的,一部分是不确定的,这时可以把不确定的那部分暴露出去,让子类去实现。
(2)编写一个抽象父类,父类提供了多个子类的通用方法,并把一个或多个方法留给其他子类实现,就是一种模板模式。
例子:要求:(1)有多个类(2)要求统计各自完成任务的时间
1 |
|
我的理解:当很多类有一个类似的方法,例如AA类要计算1+到900000的时间,BB类要计算1*到500000的时间,他们编写的方法里面的代码分为 前中后 三个部分,而且只有中间这部分的代码不同,前和后 两部部分代码相同,这时我们可以写一个抽象父类,父类中写一个抽象方法和一个普通方法,抽象方法就是把AA类和BB类的方法的 中间 那一部分代码抽象出来等子类去重写就行,然后普通方法里面写 (前部分代码+抽象方法+后部分代码),然后子类继承父类,然后重写抽象方法,然后调用父类的普通方法就行了。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!