20220808-抽象类和方法_abstract
作者:互联网
目录
抽象类:当父类的某些方法,需要声明,但是有不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类。
抽象类:当父类的某些方法,需要声明,但是有不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类。
abstract class className{
//属性
//普通方法
//构造器
//代码块,静态代码块
//静态方法
}
1. 概念:
- 抽象方法没有方法体,只有方法声明
- 抽象类会被继承,由其子类来实现抽象方法
- 用abstract修饰类时,该类就是抽象类
- 用abstract修饰方法时,该方法就是抽象方法
- 抽象类的价值更多作用是在于设计,设计者设计好后,让子类继承实现抽象类
- 抽象类在框架和设计模式中使用较多
- 抽象类不一定要包含abstract方法,可以有普通方法
- 抽象类不能被实例化
- 一旦包含抽象方法,该类就必须是抽象类
- abstract只能修饰类和方法,不能修饰属性和其他
2. 使用细节:
- 抽象类可以有任意成员(非抽象方法、构造器、静态属性等)
- 抽象方法不能有方法体
- 如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非他自己也声明为抽象类
- 抽象方法不能使用private、final和static修饰,因为这些关键字和重写相违背
- 抽象类中的普通方法和属性可以使用任意修饰符
3. 抽象类实践——模版设计模式
抽象的概念我的理解是:主要是提取共性的东西,用来提高代码复用
将共有的方法提取到抽象父类中,将变化的部分使用抽象方法的方式来表示,通过普通方法调用抽象方法,利用到了父类与子类间的继承和多态,不同的子类对象可以动态调用其实现的父类抽象方法。
//模版设计模式
abstract class AABB {
public void calculate() {
long startTime = System.currentTimeMillis();
job();
long endTime = System.currentTimeMillis();
System.out.println(endTime - startTime);
}
abstract void job();
}
class AA extends AABB {
public void job() {
long num = 0;
for (long i = 0; i < 100000; i++) {
num += i;
}
}
}
class BB extends AABB {
public void job() {
long num = 0;
for (long i = 0; i < 100000; i++) {
num *= i;
}
}
}
标签:abstract,long,抽象,20220808,设计模式,方法,抽象类 来源: https://www.cnblogs.com/zhanghuaze/p/16564119.html