教你将好钢用在刀刃上-应用抽象类 | 带你学《Java面向对象编程》之五十四

简介: 本节结合实际案例,由人、机器人、猪抽象出行为类,应用抽象类的概念实现了这三类某种程度上的统一。

上一篇:使用抽象类的注意事项 | 带你学《Java面向对象编程》之五十三
【本节目标】
通过阅读本节内容,你将对抽象类的存在有更深入的理解,并能够简答的从实际生活中的多种事物中抽象出统一的特征,形成抽象类。

模板设计模式

抽象类的本质上就属于一个加强型的类,那么对于类已经清楚了,可以描述一切的有关的现实事物,但是通过分析也可以发现,抽象类的设计应该是比类更高一层的定义。那么下面来研究一下抽象类的实际应用。
假如现在要描述有三类的事务:

  • 机器人:不休息,只知道补充能量和工作;
  • 人类:需要休息、需要吃饭以及努力地工作;
  • 猪:需要休息、不需要工作只需要吃饭。

image.png
图一 抽象类

范例:实现代码操作

abstract class Action { 
    public static final int EAT = 1 ;
    public static final int SLEEP = 5 ;
    public static final int WORK = 10 ;   
    public void command(int code) {
        switch(code) {
            case EAT : {
                this.eat () ;
                break ;
            }
            case SLEEP : {
                this.sleep () ;
                break ;
            }
            case WORK : {
                this.work () ;
                break ;
            }
            case EAT + SLEEP + WORK : {
                this.eat () ;
                this.sleep () ;
                this.work () ;
                break ;
            }
        }
    }
    public abstract void eat () ;
    public abstract void sleep () ;
    public abstract void work () ;
}
class Robot extends Action {
    public void eat () {
        System.out.println(“机器人需要接通电源充电。”) ;
    }
    public void sleep () {}
    public void work () {
        System.out.println(“机器人按照固定的套路进行工作。”) ;
    }
}
class Person extends Action {
    public void eat () {
        System.out.println(“饿的时候安静的坐下吃饭。”) ;
    }
    public void sleep () {
        System.out.println(“安静的躺下,慢慢的睡着,而后做着美丽的梦”) ;
    }
    public void work () {
        System.out.println(“人类是高级脑类动物,所以要有想法的工作。”) ;
    }
}
class Pig extends Action {
    public void eat () {
        System.out.println(“吃食槽中的人类的剩饭。”) ;
    }
    public void sleep () {
        System.out.println(“倒地就睡。”) ;
    }
    public void work () {}
}
public class JavaDemo {
    public static void main(String args[]) {
        Action robotAction = new Robot() ;
        Action personAction = new Person() ;
        Action pigAction = new Pig() ;
        System.out.println(“--------------机器人行为--------------”) ;
        robotAction.command(Action.SLEEP) ;
        robotAction.command(Action.WORK) ;
        System.out.println(“--------------人类的行为--------------”) ;
        personAction.command(Action.SLEEP + Action.EAT + Action.WORK) ;
        System.out.println(“--------------猪类的行为--------------”) ;
        pigAction.work() ;
        pigAction.eat() ;
    }
}

image.png
图二 执行结果图

现在的程序已经完整的实现了一个行为的抽象处理,但是也需要做出一点点思考。现在定义的Action父类主要的目的:对所有行为规范进行统一处理。
抽象类最大的好处一是对子类方法的统一管理,二是可以自身提供有一些普通方法并且这些普通方法,并且这些普通方法可以调用抽象方法(这些抽象方法必须在有子类提供实现的时候才会生效)。
想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:包装才更美:初识包装类 | 带你学《Java面向对象编程》之五十五
更多Java面向对象编程文章查看此处

相关文章
|
10天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
1天前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
|
3天前
|
SQL Java 数据库连接
从理论到实践:Hibernate与JPA在Java项目中的实际应用
本文介绍了Java持久层框架Hibernate和JPA的基本概念及其在具体项目中的应用。通过一个在线书店系统的实例,展示了如何使用@Entity注解定义实体类、通过Spring Data JPA定义仓库接口、在服务层调用方法进行数据库操作,以及使用JPQL编写自定义查询和管理事务。这些技术不仅简化了数据库操作,还显著提升了开发效率。
12 3
|
13天前
|
SQL 监控 Java
技术前沿:Java连接池技术的最新发展与应用
本文探讨了Java连接池技术的最新发展与应用,包括高性能与低延迟、智能化管理和监控、扩展性与兼容性等方面。同时,结合最佳实践,介绍了如何选择合适的连接池库、合理配置参数、使用监控工具及优化数据库操作,为开发者提供了一份详尽的技术指南。
23 7
|
11天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
26 3
|
11天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
26 2
|
12天前
|
Java
Java基础(13)抽象类、接口
本文介绍了Java面向对象编程中的抽象类和接口两个核心概念。抽象类不能被实例化,通常用于定义子类的通用方法和属性;接口则是完全抽象的类,允许声明一组方法但不实现它们。文章通过代码示例详细解析了抽象类和接口的定义及实现,并讨论了它们的区别和使用场景。
|
12天前
|
缓存 Java 数据库连接
Hibernate:Java持久层框架的高效应用
通过上述步骤,可以在Java项目中高效应用Hibernate框架,实现对关系数据库的透明持久化管理。Hibernate提供的强大功能和灵活配置,使得开发者能够专注于业务逻辑的实现,而不必过多关注底层数据库操作。
10 1
|
14天前
|
Java 测试技术 开发者
Java零基础-抽象类详解
【10月更文挑战第17天】Java零基础教学篇,手把手实践教学!
11 2
|
13天前
|
Java 开发者
Java中的多线程基础与应用
【10月更文挑战第24天】在Java的世界中,多线程是提高效率和实现并发处理的关键。本文将深入浅出地介绍如何在Java中创建和管理多线程,以及如何通过同步机制确保数据的安全性。我们将一起探索线程生命周期的奥秘,并通过实例学习如何优化多线程的性能。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往高效编程的大门。
13 0