关于抽象类的笔记
发布日期:2021-05-13 22:33:20 浏览次数:20 分类:精选文章

本文共 1926 字,大约阅读时间需要 6 分钟。

抽象类与模板设计模式


抽象类

当在编写Java代码时,如果父类中存在某些方法或功能但没有具体实现,这些方法可能被提取到一个基类中——抽象类。抽象类是一种蓝图,允许我们定义一些必须由子类实现的方法。

抽象类的特点:

  • 抽象类和抽象方法必须使用 abstract 关键字修饰
  • 抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类
  • 抽象类不能实例化
  • 抽象类可以有构造方法
  • 抽象类的子类要么重写父类中的所有抽象方法,要么是抽象类
  • 抽象类与抽象方法的定义格式:

  • 抽象类的定义格式

    public abstract class 类名 {}
  • 抽象方法的定义格式

    public abstract void 方法名();
  • 案例解析:动物类与子类

    需求:定义猫类(Cat)和狗类(Dog),其中它们共享吃和喝的行为。

    实现步骤:

  • 提取共性内容:

    定义一个基类 Animal(动物),其中 eat()drink() 方法不具体实现,而是定义为抽象方法。

  • 让子类重写抽象方法:

    CatDog 都继承自 Animal,并重写 eat() 方法,分别实现“猫吃鱼”和“狗吃肉”。

  • 代码实现:

    public abstract class Animal {    public void drink() {        System.out.println("喝水...");    }    public abstract void eat();}
    public class Dog extends Animal {    public void eat() {        System.out.println("狗吃肉。");    }}
    public class Cat extends Animal {    public void eat() {        System.out.println("猫吃鱼");    }}

    测试结果:

    public class Test {    public static void main(String[] args) {        Dog dog = new Dog();        dog.drink();        dog.eat();        Cat cat = new Cat();        cat.drink();        cat.eat();    }}

    喝水...

    狗吃肉。
    猫吃鱼


    模板设计模式

    模板设计模式是一种常见的设计模式,其核心思想是将一般性内容抽离到一个基类中。

    模板设计模式的含义:

    模板类(抽象类)定义了一组通用的操作,模板中的细节无法确定时,通过抽象方法将这些细节留给子类实现。模板类本身不能实例化,只能被其他类继承并重写其抽象方法。

    模板设计模式的优势:

    • 保证代码的可重用性:可以将通用功能提取为模板,便于多个子类复用。
    • 提高代码的可读性:其他开发者可以清楚模板的作用和结构。
    • 简化开发流程:子类只需实现特定功能,避免重复代码。

    模板设计模式示例:作文模板

    public abstract class CompositionTemplate {    public final void write() {        System.out.println("
    雪中悍刀行
    "); body(); System.out.println("我曾雪中悍刀行"); } public abstract void body();}
    public class XuFengNian extends CompositionTemplate {    public void body() {        System.out.println("我曾敦煌骑龙袍!");    }}

    Final关键字的应用

    Final 关键字用于修饰类、方法和变量,其作用是限制相关元素的修改性。具体用途如下:

  • 修饰类:

    该类不能被其他类继承,但可以有父类。

  • 修饰方法:

    该方法不能被重写,默认为 publicprivate

  • 修饰变量:

    该变量是一个常量,不能改变其值。

    • 若为基本类型,值不可变。
    • 若为引用类型,对象地址不可变,但对象内部数据可更改。
  • Final关键字与抽象类的结合

    public final class FinalClass {    public final void finalMethod() {        System.out.println("无法重写...");    }}
    上一篇:关于接口的一些笔记
    下一篇:关于继承的一些基本知识

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年04月20日 01时21分12秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章