Java_OOP-高级篇4(抽象类)
抽象类
基本介绍
当父类某些方法需要声明,但是实现的因素不确定,可把方法抽象(该方法没有方法体),该类为抽象类;由子类具体实现
语法
abstract class{
public abstract void info();
}
细节与注意🚩🚩🚩
- 抽象类不可以实例化
- 抽象类不一定包含抽象方法;但是有抽象方法,类也必须抽象化
- 🚩abstract只能修饰类和方法;
- 抽象类本质也是类,具有类的共同性质(属性、方法、构造器、代码块等等)
- 抽象方法没有方法体:
public abstract void info(); - 🚩如果继承了抽象类,则该类必须实现所有抽象方法;除非该类本身也是抽象类
- 🚩抽象方法不能使用
private final static关键字修饰,因为与重写机制违背
抽象类最佳实践-模板设计模式
package com.java_learn.oop_advanced.abstract_;
public class Template {
public static void main(String[] args) {
/**
*模板设计模式
* 当多个任务有相同部分时
* 可提取相同作为模板
* 不同的抽象到父类方法
* */
Tmp1 sub1 = new Sub1();
sub1.caluateTime();
Tmp1 sub2 = new Sub2();
sub2.caluateTime();
}
}
abstract class Tmp1{
public abstract void job();
public void caluateTime(){
long start=System.currentTimeMillis();//计算当前时间
job();//具体工作子类实现
//此时job方法会动态绑定
long end=System.currentTimeMillis();//计算当前时间
System.out.println("job方法工作了"+(end-start)+"ms");//计算出job运行时间
}
}
class Sub1 extends Tmp1{
public void job(){//执行工作不同
int i=0;
while (i<2000000000){
i++;
}
}
}
class Sub2 extends Tmp1{
@Override
public void job() {//执行工作不同
for (int i = 0; i < 1000000; i++) {
i+=0.1;
}
}
}

浙公网安备 33010602011771号