匿名内部类

警告:匿名内部类本质上是一个对象

如果有一个接口或者抽象类,必须要用class定义一个实现类写重写抽象方法,才能创建对象并使用。

匿名内部类就是省略了用class定义子类的过程,直接使用父类或者接口创建子类对象

 1 //动物类
2 public abstract class Animal{
3 public void eat();
4 }
5 //饲养员类
6 public class Feeder{
7 public void feed(Animal a){
8 a.eat();
9 }
10 }
11 //测试类
12 public class Demo4{
13 public static void main(String[] args){
14 //创建饲养员对象
15 Feeder f=new Feeder();
16 //饲养员养一个动物
17 f.feed(new Animal(){
18 public void eat(){
19 System.out.println("狗吃骨头");
20 }
21 });
22 //饲养员养另一个动物
23 f.feed(new Animal(){
24 public void eat(){
25 System.out.println("猫吃鱼");
26 }
27 });
28 }
29 }

接口回调

 1
2 //定义技能的接口
3 public interface Skill {
4 public void useSkill(); //释放技能
5 }
6 //英雄类
7 public class Hero {
8 private String name;//英雄的姓名
9 private Skill skill;//英雄的技能
10 //设置技能
11 public void setSkill(Skill skill) {
12 this.skill = skill;
13 }
14 //开始玩
15 public void play(){
16 skill.useSkill(); //这里执行的是具体技能的复写方法
17 }
18 }
19 //测试类
20 public class Demo4 {
21 public static void main(String[] args) {
22 //创建英雄对象
23 Hero hero=new Hero();
24 //给英雄设置技能
25 hero.setSkill(new Skill() {
26 @Override
27 public void useSkill() {
28 System.out.println("拱墙,拱砖...变大...踩鸭子");
29 }
30 });
31 //让英雄使用技能
32 hero.play();
33 }
34 }

下面是代码调用的流程,注意箭头的指向

Java_接口回调与匿名内部类的更多相关文章

  1. C#委托和事件?策略模式?接口回调?还不清楚的赶紧来看我扯

    早前学习委托的时候,写过一点东西,今天带着新的思考和认知,再记点东西.这篇文章扯到设计模式中的策略模式,观察者模式,还有.NET的特性之一--委托.真的,请相信我,我只是在扯淡...... 场景练习 ...

  2. Java学习之Java接口回调理解

    Java接口回调 在Java学习中有个比较重要的知识点,就是今天我们要讲的接口回调.接口回调的理解如果解释起来会比较抽象,我一般喜欢用一个或几个经典的例子来帮助加深理解. 举例:老板分派给员工做事,员 ...

  3. 扯一扯 C#委托和事件?策略模式?接口回调?

    早前学习委托的时候,写过一点东西,今天带着新的思考和认知,再记点东西.这篇文章扯到设计模式中的策略模式,观察者模式,还有.NET的特性之一--委托.真的,请相信我,我只是在扯淡...... 场景练习 ...

  4. java 接口回调

    学习自:http://blog.csdn.net/xiaanming/article/details/8703708/ http://hellosure.iteye.com/blog/1130176 ...

  5. Android开发之自定义组件和接口回调

    说到自定义控件不得不提的就是接口回调,在Android开发中接口回调用的还是蛮多的.在这篇博客开始的时候呢,我想聊一下iOS的自定义控件.在iOS中自定义控件的思路是继承自UIView, 在UIVie ...

  6. Android中的接口回调技术

    Android中的接口回调技术有很多应用的场景,最常见的:Activity(人机交互的端口)的UI界面中定义了Button,点击该Button时,执行某个逻辑. 下面参见上述执行的模型,讲述James ...

  7. Java中接口式的匿名内部类的构造方法

    在使用多线程的时候,时常会使用两种方式实现,一种是直接继承Thread类来实现多线程,另外一种就是实现Runnable接口. 我们都知道,接口是没有构造方法的,同时匿名内部类也是没有构造方法的.原因有 ...

  8. Android接口回调机制

    开发中,接口回调是我们经常用到的. 接口回调的意思即,注册之后并不立马执行,而在某个时机触发执行. 举个例子: A有一个问题不会,他去问B,B暂时解决不出来,B说,等我(B)解决了再告诉你(A)此时A ...

  9. Android系列之Fragment(三)----Fragment和Activity之间的通信(含接口回调)

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

随机推荐

  1. vim宏录制的操作

    1:在vim编辑器normal模式下输入qa(其中a为vim的寄存器) 2:此时在按i进入插入模式,vim编辑器下方则会出现正在录制字样,此时便可以开始操作. 3:需要录制的操作完成后,在normal ...

  2. 如何在 ASP.Net Web Forms 中使用依赖注入

    依赖注入技术就是将一个对象注入到一个需要它的对象中,同时它也是控制反转的一种实现,显而易见,这样可以实现对象之间的解耦并且更方便测试和维护,依赖注入的原则早已经指出了,应用程序的高层模块不依赖于低层模 ...

  3. c++ 反汇编 继承

    单继承,父类中没有虚函数 单继承,父类存在虚函数,子类重写虚函数 单继承,父类存在虚函数,子类不新定义虚函数 单继承,父类存在虚函数,子类新定义虚函数 单继承,父类不存在虚函数,子类定义虚函数 多继承 ...

  4. 11、MyBatis教程之动态SQL

    12.动态SQL 1.介绍 什么是动态SQL:动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句. 官网描述: MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或 ...

  5. 前端vue使用高德地图

    首先,注册Key 1.注册开发者账号,成为高德开放平台开发者 2.登陆之后,在进入「应用管理」 页面「创建新应用」 3.为应用添加 Key,「服务平台」一项请选择「 Web 端 ( JSAPI ) 」 ...

  6. HarmonyOS三方件开发指南(16)-VideoCache 视频缓存

    目录: 1.引言 2.功能介绍 3.VideoCache使用指南 4.VideoCache开发指南 5.<HarmonyOS三方件开发指南>系列文章合集 引言 对于视频播放器这个app大家 ...

  7. C#中protobuf-net的编码结构及使用方法

    目录 protobuf-net简介 ProtoBuf编码原理 编码结构 解析一个编码结果 使用方法 参考资料 protobuf-net简介 Protocol Buffer(简称Protobuf) 是 ...

  8. 基于vite2的react脚手架

    vite-react-boilerplate 开发编译 yarn start 启动开发 yarn build 启动编译 代码质量和风格 husky/lint-staged/eslint/prettie ...

  9. Dynamics CRM绑定表单查看当前表单的数据参数传递

    我们做报表的时候,报表运行的位置可以在列表.也可以在报表区同时也可以在表单界面 其他两个都还好,不需要进行过滤,但是在表单界面运行报表需要将表单的GUID传给报表获取数据,否则就得手动去输入ID 具体 ...

  10. Java代码度量分析工具:DesigniteJava简介

    前言 在Java面向对象课程的学习过程中,我们需要使用度量工具来分析自己程序的代码结构.受OO课程组以及前辈们博客提醒,笔者找到了DesigniteJava这款软件,现对此软件进行简单的说明. 一.D ...