20220808-抽象类和方法_abstract
2022/8/9 6:23:46
本文主要是介绍20220808-抽象类和方法_abstract,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- 1. 概念:
- 2. 使用细节:
- 3. 抽象类实践——模版设计模式
抽象类:当父类的某些方法,需要声明,但是有不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类。
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; } } }
这篇关于20220808-抽象类和方法_abstract的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升