java中与接口有关的匿名类详解
来源:互联网 发布:乾隆下江南 知乎 编辑:程序博客网 时间:2024/05/23 22:52
假设Computable是一个接口,那么,Java允许直接用接口名和一个类体创建一个匿名对象,此类体被认为是实现了Computable接口的类去掉类声明后的类体,称作匿名类。
new Computable() {
实现接口的匿名类的类体
} ;
如果某个方法的参数是接口类型,那么可以使用接口名和类体组合创建一个匿名对象传递给方法的参数,对于
void f(ComPutable x) 其中的参数x是接口,那么在调用f时,可以向f的参数x传递一个匿名对象,例如:
f(new ComPutable() {
实现接口的匿名类的类体
})
新建一个Ball类
Ball.java
public interface Ball { //接口
void getColor();
}
新建RedBall 类
RedBall .java
public class RedBall implements Ball{ //实现这个接口和抽象方法
@Override
public void getColor() {
System.out.println("red");
}
}
新建BlueBall类
BlueBall.java
public class BlueBall implements Ball{ //实现这个接口和抽象方法
@Override
public void getColor() {
System.out.println("blue");
}
}
Test.java
public class Test {
void testPerson(Person person) {
person.speak();
}
void testCar(Car car){
car.sound();
}
void testBall(Ball ball){
ball.getColor();
}
}
在主类中如何来调用它呢?
Demo29.java
public class Demo29 {
public static void main(String[] args) {
Ball ball = new RedBall();
Test test = new Test();
test.testBall(ball);
}
}
运行结果
修改代码
Demo29.java
public class Demo29 {
public static void main(String[] args) {
Ball ball = new RedBall();
Test test = new Test();
test.testBall(ball);
ball = new BlueBall();
test.testBall(ball); //再把我们的ball传进来
}
}
运行结果,先打印red,再打印blue这就是之前的接口与多态
这里将接口和多态和我们的匿名类结合起来
修改代码
Demo29.java
public class Demo29 {
public static void main(String[] args) {
Ball ball = new RedBall();
Test test = new Test();
test.testBall(ball);
test.testBall(ball);
test.testBall(new RedBall());
test.testBall(new Ball() { //这里重写的是一个接口,一个接口必须把它当中的方法做一个实现
@Override
public void getColor() {
System.out.println("yellow");
}
});
}
}
这里的匿名接口子类打印的是yellow
原文链接:http://www.maiziedu.com/wiki/java/anonymous/
- java中与接口有关的匿名类详解
- 与接口有关的匿名类
- 和接口有关的匿名类
- java中接口和抽象类及其与接口有关的设计模式
- Java中接口(interface)和匿名类
- Java中接口(interface)和匿名类
- Java中接口(interface)和匿名类
- 详解java中接口与抽象类的区别
- java中抽象类与接口详解
- 接口与匿名类的奇怪用法
- 接口与匿名类的奇怪用法
- java中接口内的匿名内部类
- Java 匿名类详解
- java 匿名类详解
- 用和接口有关的匿名类实现圆&矩形面积的求取
- java中抽象类和接口的一般实现和特殊实现(匿名类)
- Java 中与时间有关的几个问题
- Java 中与时间有关的几个问题
- 流程图画法及练习
- 第一行代码笔记,第四章-------探究碎片
- 内存泄漏专题分析
- TextField
- html5解决大文件断点续传
- java中与接口有关的匿名类详解
- weblogic下发步骤使用命令行代替控制台界面
- 会计科目****不能使用(请更正)
- MacOS安装并使用Drozer总结
- Picasso使用的方法汇总:
- 类中const
- Linux常用命令
- 数据库-事务
- 水题,模拟(nefu 1152 阿里巴巴致富的秘密)