钩子方法是啥
钩子顾名思义就是用来挂东西的。那么要挂东西必须有个被挂的东西,要不就是铁环、要不就是墙的边沿。所以要能挂住东西必须要有个被勾住的铁环,要一个钩子。那么在java中也是同样的原理,你首先需要一个被挂在的东西,一个挂载的东西。

钩子的实现方法
是对于抽象方法或者接口中定义的方法的一个空实现,在实际中的应用,比如说有一个接口,这个接口里有7个方法,而你只想用其中一个方法,那么这时,你可以写一个抽象类实现这个接口,在这个抽象类里将你要用的那个方法设置为abstract,其它方法进行空实现,然后你再继承这个抽象类,就不需要实现其它不用的方法,这就是钩子方法的作用。

抽象父类

public abstract class AbstractClass {public abstract boolean isOpen();public final void operating() {if(isOpen()) {System.out.println("钩子方法开启");}else {System.out.println("钩子方法关闭");}}
}

实现类

public class AchieveClass extends AbstractClass {//钩子方法能挂在到operating能干预到operating业务逻辑@Overridepublic boolean isOpen() {return true;}public static void main(String[] args) {AchieveClass ac = new AchieveClass();ac.operating();}}

只要重写isOpen就能干预父类方法的业务流程。相当于将isOpen挂载在了父类的operating()中。

Java中的钩子方法相关推荐

  1. JAVA中复制数组的方法

     在JAVA里面,可以用复制语句"A=B"给基本类型的数据传递值,但是如果A,B是两个同类型的数组,复制就相当于将一个数组变量的引用传递给另一个数组;如果一个数组发生改变,那么 ...

  2. Java中的main()方法详解

    源文作者:leizhimin    源文链接:http://lavasoft.blog.51cto.com/62575/53263 源文作者版权申明: 版权声明:原创作品,允许转载,转载时请务必以超链 ...

  3. 如何在java中调用js方法

    [java] view plain copy/* * 加载脚本引擎,并在java中调用js方法 */ public void test2() { ScriptEngineManager manager ...

  4. java中构造方法和方法全面解析

    java中构造方法和方法全面解析 我相信大多说人都对构造方法.方法不陌生,而且很了解,但我也相信有很多像我这样的没有一个很好很清晰很全面的认识,今天就把它整理如下,希望能给大家带来点方便与帮助,也希望 ...

  5. java中的dispose()方法

    java中的dispose()方法 先来看看 JAVA 1.5 的帮助文档的原文 - dispose - public void dispose() ****** 释放由此 Window.其子组件及其 ...

  6. java 重写方法 访问权限_为何Java中子类重写方法的访问权限不能低于父类中权限(内含里氏替换原则)...

    为何Java中子类重写方法的访问权限不能低于父类中权限 因为 向上转型及Java程序设计维护的原因 例: 假设一个父类A 拥有的方法public void setXXX(){}可以被其他任意对象调用这 ...

  7. Java中重写equals()方法时注意点

    Java中重写equals()方法时注意点 一直说,重写一个对象的equals()方法时我们必须重写HashCode()方法,但是如果我们不重写呢?会有什么影响呢? 首先看一下,什么情况下我们需要重写 ...

  8. JAVA中list.contains()方法,要重写equals(),hashcode()方法

    今天动力节点java培训机构小编为大家介绍"JAVA中list.contains()方法,要重写equals(),hashcode()方法",希望能够帮助正在学习java的零基础学 ...

  9. Java 中的某些方法为什么要求传入一个 Class 对象

    Java 中的某些方法为什么要求传入一个 Class 对象   在 Java 中,某些方法要求传入一个 Class 对象,这能保证该方法能返回一个正确的类型的对象,从而免除返回后的强制类型转换.比如 ...

最新文章

  1. bug诞生记——信号(signal)处理导致死锁
  2. 第7章——狄克特斯拉算法
  3. go run go build go install 命令解释
  4. Matlab实用程序--图形应用-图形的叠加
  5. MySQL--3--mysqldump备份策略
  6. Android之编程中存在性能影响的主要方面
  7. HTML+CSS+JS实现 ❤️CSS3图片遮罩高亮显示❤️
  8. java后端传object给js_【JSON】JSON在前端和后端传递
  9. Nginx Image缩略图模块加强网站运行速度
  10. 阿里云服务器从购买,备案,安装部署中遇到的一些坑
  11. 华为麦芒9正式亮相:6400万三摄,2199元起
  12. 微信小程序-setData()方法
  13. Java 异常类层次结构
  14. synchornized实现原理
  15. 数字图像处理与Python实现-边缘检测-Roberts算子边缘检测
  16. 搭建vlmcsd KMS服务器
  17. .rgb格式文件的Python读取、格式转换
  18. 贴片式元器件焊接方法
  19. Tensorflow环境搭建
  20. Django电商项目(八)订单生成、悲观锁、乐观锁

热门文章

  1. VC动态链接数据库类ADOConn
  2. python3远程连接_Python3 SSH远程连接服务器的方法示例
  3. python获取文件夹下文件_Python 获取指定文件夹下的目录和文件的实现
  4. eureka多了一个莫名其妙的服务_SpringCloud 服务注册与发现组件 Eureka
  5. 如何用最简单的方式解释依赖注入?依赖注入是如何实现解耦的?
  6. leetcode 279 四平方定理
  7. Object 及toString() 方法的重写
  8. 1001. A+B Format (20)---------------PAT开始
  9. phpweb2.0 开发实战 ----- 配置虚拟主机
  10. 数据库设计(四)概念数据模型