Java——抽象类

1.什么是抽象类?怎么定义抽象类?

------使用abstract关键字修饰的类称为抽象类

------格式:

public abstract class 类名{ ... }

2.什么是抽象方法?怎么定义抽象方法?

------使用abstract关键字修饰且没有具体实现的方法就是一个抽象方法

------格式:

public abstract 返回值类型 方法名(参数列表);

3.抽象类抽象方法的使用场景?

------当父类定义一个方法时,每个子类对该方法的具体实现逻辑都不一样,那么父类定义该方法时就可以定义成抽象的方法,这个类必然是抽象类

4.抽象类注意事项?

------抽象类和抽象方法必须要用abstract修饰

------抽象类不能创建对象(不能实例化)(既然不能创建对象了,为什么还要有构造方法? ------ 抽象类通常是用于父类,创建子类对象时,需要先初始化父类(抽象方法中构造方法的作用就是用于父类初始化使用))

------抽象类中可以有抽象方法,也可以有非抽象方法,抽象方法必须存在抽象类中,不然程序会报错

------抽象类的子类要么重写抽象类类中的所有抽象方法,要么子类也变成抽象类

错题:正确答案选:B

C:抽象类的子类要么重写抽象类类中的所有抽象方法,要么也变成抽象类

5.使用抽象类写模板方法设计模式代码

1.什么是设计模式?

设计模式,就是一种解决方案(一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结),简单来说 , 就是一套良好的编码风格 , 通过众多开发人员 , 长时间测试 , 经验总结而来, 不同的设计模式也有不同的好处

2.设计模式解决什么问题?

为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

3.模板设计模式:

  • 模板:就一个固定的格式
  • 模板设计:把确定的内容,提前准备好,把不确定的内容,定义为抽象方法(由子类重写)

4.抽象类写模板方法

------模板设计模式:把抽象类整体就可以看做成一个模板,模板中不能决定的东西定义成抽象方法

让使用模板的类(继承抽象类的类)去重写抽象方法实现需求

------小结:模板设计模式的优势,模板已经定义了通用结构,使用者只需要关心自己需要实现的功能即可

plain 复制代码
public abstract class desigemode{
    public void writing(){
        head();
        body();
        end();

    }
    private void head(){
        System.out.println("《我的爸爸》");
    }
    public abstract void body();
    private void end(){
        System.out.println("啊!,这就是我的爸爸!");
    }
}
--------------------------------------------------------------------------------
public class userzi extends desigemodel{
    @Override
    public void body() {
        System.out.println("那是一个秋天 , 风儿那么缠绵 ,记忆中,那
        天爸爸骑车送我放学回家 , 我的脚卡在了自行车链中 , 爸爸蹬不动, 他就站起来蹬!");
    }
}
---------------------------------------------------------------------
public class Text {
    public static void main(String[] args) {
    userzi zi = new userzi();
     zi.writing();
    }
}
----------------------------------------------------------------------------
运行结果:
《我的爸爸》
那是一个秋天 , 风儿那么缠绵 ,记忆中,那天爸爸骑车送我放学回家 , 我的脚卡在了自行车链中 , 爸爸蹬
不动, 他就站起来蹬!
啊!,这就是我的爸爸!
相关推荐
木头科技1 天前
【AI 工程化第十六篇】Spring AI 多模态 RAG 实战:图片、扫描件、表格与图文证据链
java·人工智能·spring
FLJwu1 天前
运动相机图像传感器选型实战|第二篇:参数看着一模一样,为什么骑行录像疯狂果冻、拖影翻车?
android·c语言·开发语言·数码相机·运动相机·oem 量产
驭渊的小故事1 天前
从 JVM 底层看泛型:泛型擦除、Signature 属性与 Super Type Token 模式
java·开发语言·jvm
菜鸟小杰子1 天前
手动修改 Spring Boot 嵌套 JAR 包:大包小包隔离打包实战
java·jar
Escalating_xu1 天前
【C语言项目实战】贪吃蛇(下):移动、碰撞与计分,完成一局可玩的游戏
c语言·开发语言·游戏
计算机编程-吉哥1 天前
计算机毕业设计 基于 SpringBoot + Vue 的剧本杀系统 Java毕业设计【任务书、开题报告、中期报告、论文、源码】
java·vue.js·spring boot·毕业设计·课程设计·计算机毕业设计选题
code2cat1 天前
【随笔】RAG语义缓存:问题很相似,答案就能直接复用吗
java·缓存·知识库·rag
Rain的Java大神之路1 天前
面了 50 个候选人,90% 都挂在 LeetCode 3 无重复字符的最长子串:滑动窗口的 5 个致命坑
java·后端·leetcode
西凉的悲伤1 天前
Jsoup 库 HTML 解析详解
java·前端·html·jsoup
qq_401700411 天前
Qt Modbus 源码剖析:从 QModbusClient 到工业级通信框架
开发语言·qt·系统架构