匿名内部类

本文通过两个案例介绍了匿名内部类的使用,包括饲养员饲养不同动物的场景和给机器人赋予技能的场景。在饲养员案例中,匿名内部类用于创建不同行为的动物对象,而在机器人案例中,接口回调展示了如何动态地为机器人设置技能并执行。这两个例子展示了匿名内部类和接口回调在简化代码和提高灵活性方面的优势。
摘要由CSDN通过智能技术生成

匿名内部类*

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

匿名内部类就是省略了用class定义子类的过程,直接使用父类或者接口创建子类对象
匿名内部类
案例1:饲养员饲养动物

abstract class Animal{//动物类
	public void eat() {
	}
}
 class Fedder{//饲养员类
	public void feed(Animal a) {
		a.eat();
	}
}
//测试类
public class Test6 {
	public static void main(String[] args) {
		//创建饲养员对象
		Fedder fedder=new Fedder();
		//饲养员再养一只动物
		fedder.feed(new Animal() {
			public void eat() {
				System.out.println("牛在吃草");
			}
		});
		//饲养员养另一只动物
		fedder.feed(new Animal() {
			public void eat() {
				System.out.println("鸡在啄米");
			}
		});
	}
}

接口回调
案列2:给机器人赋予技能

import java.util.jar.Attributes.Name;

//=====================接口回调===========================
//定义技能接口
interface Skill{
	public void useSkill();//释放技能
}
//机器人类
class Robot{
	private Name name;//名字
	private Skill skill;//技能
	
	//设置技能
	public void setSkill(Skill skill) {
		this.skill=skill;
		
	}
	//开始
	public void paly() {
		skill.useSkill();//这里执行的是具有技能的复写
	}
}
//测试类
public class Test7 {
	public static void main(String[] args) {
		//创建机器人对象
		Robot hero=new Robot();
		//给机器人设置技能
		hero.setSkill(new Skill(){//回调:public void setSkill(Skill skill)
			@Override
			public void useSkill() {
				System.out.println("跑");
			}
		});
		hero.paly();
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值