
关于抽象类的笔记
抽象类和抽象方法必须使用 抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类 抽象类不能实例化 抽象类可以有构造方法 抽象类的子类要么重写父类中的所有抽象方法,要么是抽象类
发布日期:2021-05-13 22:33:20
浏览次数:20
分类:精选文章
本文共 1926 字,大约阅读时间需要 6 分钟。
抽象类与模板设计模式
抽象类
当在编写Java代码时,如果父类中存在某些方法或功能但没有具体实现,这些方法可能被提取到一个基类中——抽象类。抽象类是一种蓝图,允许我们定义一些必须由子类实现的方法。
抽象类的特点:
abstract
关键字修饰抽象类与抽象方法的定义格式:
抽象类的定义格式
public abstract class 类名 {}
抽象方法的定义格式
public abstract void 方法名();
案例解析:动物类与子类
需求:定义猫类(Cat)和狗类(Dog),其中它们共享吃和喝的行为。
实现步骤:
提取共性内容:
定义一个基类Animal
(动物),其中 eat()
和 drink()
方法不具体实现,而是定义为抽象方法。让子类重写抽象方法:
Cat
和 Dog
都继承自 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
关键字用于修饰类、方法和变量,其作用是限制相关元素的修改性。具体用途如下:
修饰类:
该类不能被其他类继承,但可以有父类。修饰方法:
该方法不能被重写,默认为public
或 private
。修饰变量:
该变量是一个常量,不能改变其值。- 若为基本类型,值不可变。
- 若为引用类型,对象地址不可变,但对象内部数据可更改。
Final关键字与抽象类的结合
public final class FinalClass { public final void finalMethod() { System.out.println("无法重写..."); }}
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月20日 01时21分12秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
域名解析步骤
2021-05-14
APP卡片式设计
2019-03-11
null和undefined的区别
2019-03-11
1.普通注册界面(html)(转载于JavaWeb应用开发与实践)
2019-03-11
GitHub上传时,项目在已有文档时直接push出现错误解决方案
2019-03-11
云数据库
2019-03-11
图计算
2019-03-11
大数据在不同领域的应用
2019-03-11
页面置换算法
2019-03-11
推荐系统资料
2019-03-11
文件系统的层次结构
2019-03-11
减少磁盘延迟时间的方法
2019-03-11
磁盘的管理
2019-03-11
FCFS、SJF、HRRN调度算法
2019-03-11
vue(渐进式前端框架)
2019-03-11
权值初始化和与损失函数
2019-03-11
案例讨论
2019-03-11
传输层基本功能
2019-03-11
最长公共子序列
2019-03-11
分治算法的一般描述和分析方法
2019-03-11