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;
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?