Java_OOP-高级篇4(抽象类)

抽象类

基本介绍

当父类某些方法需要声明,但是实现的因素不确定,可把方法抽象(该方法没有方法体),该类为抽象类;由子类具体实现

语法

abstract class{
   public abstract void info(); 
}

细节与注意🚩🚩🚩

  1. 抽象类不可以实例化
  2. 抽象类不一定包含抽象方法;但是有抽象方法,类也必须抽象化
  3. 🚩abstract只能修饰方法
  4. 抽象类本质也是类,具有类的共同性质(属性、方法、构造器、代码块等等)
  5. 抽象方法没有方法体:public abstract void info();
  6. 🚩如果继承了抽象类,则该类必须实现所有抽象方法除非该类本身也是抽象类
  7. 🚩抽象方法不能使用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;
        }
    }
}
posted @   Chair-0u98  阅读(21)  评论(0编辑  收藏  举报
编辑推荐:
· .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 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示