1-抽象列的入门

一、抽象类的介绍

抽象类

what?

​ 当用 一个 abstract 关键字来修饰一个类时,这个类就被称为 ==抽象类==

how?

1
2
3
修饰符 abstract 类名{

}

抽象方法

what?

​ 当用 一个 abstract 关键字来修饰一个方法时,这个类就被称为 ==抽象方法==

image-20221108184236092

二、抽象类的注意事项

  1. 抽象类的 ==抽象方法一定要被子类实现==or==子类也是抽象类==。

  2. 抽象类不能被实例化
    image-20221108184721482

  3. 有抽象方法的类一定是抽象方法,但抽象类不一定有抽象方法。

  4. abstract 只能修饰类和方法
    image-20221108184853996

  5. 抽象类可以有类的任何成员。==【其本质还是类】==

  6. 抽象方法不能有方法主体
    image-20221108185110200

  7. 抽象方法不能使用 private、final 和 static 来修饰。

    private :子类无法访问改父类方法,也就无法完成对此方法进行重写。

    final 修饰的方法不能被重写,但在子类中必须对抽象方法进行重写。

    static :静态方法本身就不能被覆盖
    image-20221108192501511

重写是子类对==父类的允许访问的方法==的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!

三、应用

1. 模块设计模式

需求:
image-20221108185603751

答案:

1. 写一个父类。然后让 dojob 方法成为抽象方法,子类实现它,并在里面写子类做的事情

1
2
3
4
5
6
7
8
9
10
abstract  class test{
public long calculateTime(){
long start = System.currentTimeMillis();
dojob();
long end = System.currentTimeMillis();
long total=end-start;
return total;
}
public abstract void dojob();
}

2.子类

1
2
3
4
5
6
7
8
9
class bbb extends test{

@Override
public void dojob() {
for (int i = 0; i < 1000; i++) {

}
}
}