尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Java—抽象类 - 实践

Java—抽象类 - 实践
📅 发布时间:2026/6/18 7:17:35

目录

1、认识抽象类

2、使用抽象类的好处

​编辑3、模版方法设计模式


1、认识抽象类

在Java中有一个关键字叫:abstract,它就是抽象的意思,可以用它修饰类,成员方法。

  • abstract修饰类,这个类就是抽象类。
  • abstract修饰方法,这个方法就是抽象方法。

抽象类和抽方法的格式

修饰符 bastract  class 类名{

        //抽象方法:必须abstract修饰,只有方法签名,不能有方法体

修饰符 abstract 放回值类型 方法名称(形参列表); 

}

抽象类的注意事项

  • 抽象类中不一定要有抽象方法,有抽象方法的类必须是抽象类。
  • 类有的成员:成员变量、方法、构造器、抽象类都可以有。

抽象类最主要的特点:

  • 抽象类不能创建对象,仅仅作为一种特殊的父类,让子类继承并实现。
  • 一个类继承抽象类,必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。

2、使用抽象类的好处

        父类知道每个子类都要做某个行为,但每个子类要做的情况不一样,父类就定义成抽象方法,交给子类去重写实现,我们设计这样的抽象类,就是为了更好的支持多态。

 Animal 类抽象类

public abstract class Animal {//动物的叫声,因为每个动物的叫声都不同,所以抽象方法。//好处一:简化方法体。public abstract void cry();
}

Cat类:继承了Animal抽象类重写了cry方法

public class Cat extends Animal{@Overridepublic  void cry(){System.out.println("(>^ω^<)喵喵喵喵~~~");}
}

God类:继承了Animal抽象类重写了cry方法

public class God extends Animal{@Overridepublic void cry(){System.out.println("狗汪汪汪~~~");}
}

Test类:测试类

public class Test {public static void main(String[] args) {//使用抽象类的好处Animal animal = new Cat();animal.cry();}
}
/*
输出:
(>^ω^<)喵喵喵喵~~~*/

3、模版方法设计模式

  • 提供一个方法作为完成某个类功能的模版,模版方法封装了每个实现步骤,但允许子类提供特定步骤的实现。
  • 模版方法设计模式可以:提高代码的复用,并简化子类设计。

模版方法设计模式的写法步骤:

1、定义一个抽象类。

2、在里面定义2个方法

一个模版方法:把共同的实现步骤方里面去。

        一个是抽象方法:不确定的步骤,交给具体的子类来拿完成。

        下面举个例子分别用普通方法和模版方法设计模式类实现:老师和学生同写一篇作文,作文有一个模版,模版的第一段和第三段相同,写作文的时候只需要写第二段即可。

普通版本

Student 类

public class Student {public void write(){System.out.println("第一段相同");System.out.println("学生的第二段");System.out.println("第三段相同");}
}

Teacher 类

public class Teacher {public void write(){System.out.println("第一段相同");System.out.println("老师的第二段");System.out.println("第三段相同");}
}

Test 类

public class Test {public static void main(String[] args) {Student s = new Student();s.write();}
}
/*
输出:
第一段相同
学生的第二段
第三段相同*/

模版方法设计模式类实现

People 类:抽象类

public abstract class People {public void write(){System.out.println("第一段相同");wrideMain();//调用抽象方法,在子类中重写了System.out.println("第三段相同");}public abstract void wrideMain();
}

Student 类:继承了People类

public class Student extends People{@Overridepublic void wrideMain() {System.out.println("学生的第二段");}
}

Teachar类:继承了People类

public class Teacher extends People{@Overridepublic void wrideMain(){System.out.println("老师的第二段");}
}

Test类:测试类

public class Test {public static void main(String[] args) {People s = new Student();s.write();}
}
/*
输出:
第一段相同
学生的第二段
第三段相同*/

多学一招

建议使用final关键字修饰模版方法,为什么?

  • 模版方法是给子类直接使用的,不能被子类重写。
  • 一但子类重写了模版方法,模版方法就失效了。

相关新闻

  • 英语_阅读_AI models_待读
  • 2025年食品厂生产用水紫外线消毒设备优质厂家权威推荐榜单:牛奶厂紫外线消毒设备/饮料杀菌紫外线消毒设备/啤酒生产紫外线消毒设备源头厂家精选
  • 2025年福建钨钢棒回收公司权威推荐榜单:福州钨钢合金回收/福建钨钢模具回收/福建钨钢块回收服务商精选

最新新闻

  • Web登录口生日规则暴力破解完整实战教程
  • Nginx集成ModSecurity v3:从源码编译到OWASP CRS配置的WAF实战指南
  • 猫抓Cat-Catch:浏览器视频下载终极解决方案,三步轻松获取网页视频资源
  • Playwright-MCP零配置自动化测试部署实战指南
  • 深入解析三相正弦波生成与SVPWM:从DSP定点算法到电机FOC实战
  • 2026年比较好的水洗砾石白色石子/庐山透水路面砾石铺/庐山地坪骨料砾石/打蜡黑砾石长期合作厂家推荐 - 品牌宣传支持者

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号