Java抽象类(abstract)

£神魔★判官ぃ 2024-03-31 08:22 234阅读 0赞
抽象类

当父类的某些方法,需要声明,但是又不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类

e9b90a13c13e44fc88b02edbb3303c0b.png

1)用abstract关键字来修饰一个类时,这个类就叫抽象类

  1. 访问修饰符 abstract 类名 {}

2)用abstract关键宇来修饰一个方法时,这个方法就是抽象方法

  1. 访问修饰符 abstract 返回类型 方法名(参数列表); //没有方法体

3)抽象类的价值更多作用是在于设计,是设计者设计好后,让子类继承并实现

4)抽象类,是考官比较爱问的知识点,在框架和设计模式使用较多

抽象类使用的注意事项和细节讨论

1)抽象类不能被实例化[举例]
2)抽象类不一定要包含abstract方法。也就是说抽象类可以没有abstract方法[举例
3)一旦类包含了abstract方法,则这个类必须声明为abstract [说明]
4)abstract只能修饰类和方法,不能修饰属性和其它的。[说明]
5)抽象类可以有任意成员[抽象类本质还是类] ,比如:非抽象方法、构造器、静态属性等等
6)抽象方法不能有主体,即不能实现如图所示image-20221115214428823

7)如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为abstract类。[举例 A类,B类,C类]
8)抽象方法不能使用private、final和static来修饰,因为这些关键字都是和重写相违背的。

抽象类最佳实践 模板设计模式

1)有多个类,完成不同的任务job
2)要求统计得到各自完成任务的时间
3)请编程实现

感情的自然流露
1.先用最容易想到的方法
2.分析问题,提出使用模板设计模式

设计一个抽象类(Template),能完成如下功能:
1)编写方法calculate Time() ,可以计算某段代码的耗时时间
2)编写抽象方法job()
3)编写一个子类Sub,继承抽象类Template,并实现job方法。
4)编写一个测试类TestTemplate, 看看是否好用。

image-20221116113329904

Template.java

  1. package src.template;
  2. public abstract class Template {
  3. public abstract void job();
  4. public void calTime() {
  5. long start = System.currentTimeMillis();
  6. job();
  7. long end = System.currentTimeMillis();
  8. System.out.println("任务执行时间: " + (end - start));
  9. }
  10. }

AA.java

  1. package src.template;
  2. public class AA extends Template {
  3. @Override
  4. public void job() {
  5. long num = 0;
  6. for (long i = 0; i < 10000; i++) {
  7. num += i;
  8. }
  9. }
  10. }

BB.java

  1. package src.template;
  2. public class BB extends Template {
  3. @Override
  4. public void job() {
  5. long num = 0;
  6. for (long i = 0; i < 10000000; i++) {
  7. num += i;
  8. }
  9. }
  10. }

Test.java

  1. package src.template;
  2. public class Test {
  3. public static void main(String[] args) {
  4. AA aa = new AA();
  5. aa.calTime();
  6. BB bb = new BB();
  7. bb.calTime();
  8. }
  9. }

发表评论

表情:
评论列表 (有 0 条评论,234人围观)

还没有评论,来说两句吧...

相关阅读

    相关 abstract抽象

    一、 1. 约束就是子类继承他必须实现他的方法,如果不想实现,那子类也必须是抽象类 2. 抽象类的所有方法 继承了抽象类 的 子类,那么这个子类都必须要实现抽象类的方法。

    相关 java 抽象abstract)小结

    java抽象类 > 在面向对象概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类

    相关 抽象abstract

    抽象类遵循的原则: (1)abstract 关键字只能修饰类和方法,不能修饰字段 (2)抽象类不能被实例化(无法使用new关键字创建对象实例),只能被继承 (3)抽

    相关 JAVA抽象 abstract

    抽象类 abstract 抽象类其实就是让多态规范化了。 在类加入关键字abstract就是抽象类,在方法加上关键字abstract就是抽象方法。 抽象方法在子类就必须要

    相关 抽象abstract

    我们先来看一下Person类和子类的继承图,我们可以声明一个Person的父类,然后让它的子类派生,因为它的子类各有不同的属性和参数,所以为Person类实例方法显得有些浪费内

    相关 Java抽象abstract

    如果一个类只定义了一个为所有子类共享的一般形式,至于细节则交给每一个子类去实现,这种类没有任何具体的实例,只具有一些抽象的概念,那么这样的类称为抽象类。 在面向对象领

    相关 抽象Abstract

    学完java之后,发现很多基础东西都遗忘却。。。所以特地重新刷课,总结基础。。。温故而知新,增加记忆吧 抽象(关键字:Abstract) 多个类中出现相同的方法,但是方法实