抽象类
为了解决父类方法的不确定性
抽象类则是声明子类必须要去实现的方法,父类并没有实现,即没有方法体body{也就是大括号包括的部分}
当一个类中含有抽象方法的时候,类要被申明为抽象类
细节
- 抽象类不能被实例化。应为类里有抽象方法,没有body,没有实际功能
- 抽象类不一定要包括抽象方法,但是有抽象方法必须被处理为抽象类
- abstract只能修饰类和方法
- 抽象类还是类,可以拥有任意成员,比如抽象方法,非抽象方法,属性,静态属性
- 抽象类如果被继承,则必须完成父类的所有方法,就是要有方法题,也就是重写override,除非子类被处理为抽象类。
- 抽象方法不能用,private,static,final来修饰,应为这些都是与override相违背的
最佳实践 模板设计模式
public class Template {
public static void main(String[] args) {
BB bb = new BB();
bb.calculateTime();
}
}
abstract public class AA {
abstract public void job();
public void calculateTime(){
long start = System.currentTimeMillis();
job();
long end = System.currentTimeMillis();
System.out.println("执行时间"+(end-start));
}
}
public class BB extends AA{
@Override
public void job() {
long num = 0;
for (int i = 0; i < 1_0000_0000; i++) {
num +=i;
}
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XWCm6mDF-1650806588811)(C:\Users\30942\AppData\Roaming\Typora\typora-user-images\image-20220424212013236.png)]
用起来还是像继承,只不过继承时候父类的方法可以直接拿来使用,而抽象类必须重写
大家觉得俺的电脑速度怎么样啊,大家可以试试,然后把记过发在评论区我们讨论一下
好了,今天的学习分享又到这里了,晚安各位