ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

20220808-抽象类和方法_abstract

2022-08-08 22:03:26  阅读:325  来源: 互联网

标签:abstract long 抽象 20220808 设计模式 方法 抽象类


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

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有