美文网首页
java中与接口有关的匿名类详解

java中与接口有关的匿名类详解

作者: 沧海一束 | 来源:发表于2016-10-09 16:59 被阅读0次

假设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中与接口有关的匿名类详解

    假设Computable是一个接口,那么,Java允许直接用接口名和一个类体创建一个匿名对象,此类体被认为是实现了...

  • (转)UML类图

    UML中常见关系详解(泛化、实现、依赖、关联、组合、聚合) UML中类与类,已经类与接口,接口与接口的关系有:泛化...

  • 知识点总结

    1. java: * 集合 * 内部类,匿名类,静态类 * 抽象类,接口区别 * 线程池 * ...

  • java成神之路---集合框架

    标签(空格分隔): java java集合类库的设计思想:“接口与实现分离” java类库中的集合接口和迭代器接口...

  • Java学习笔记之Java接口 详解

    申明:非原创,转载自 Java接口 详解(一)Java接口 详解(二) 一、基本概念 接口(Interface),...

  • 05.接口的优点

    接口优点 1.类与接口的关系,实现关系,而且是多实现,一个类可以实现多个接口,类与类之间是继承关系,java中的继...

  • Android三种网络通信方式

    1.标准Java接口 java.net.*提供与联网有关的类,包括流、数据包套接字(socket)、Interne...

  • 一、JDBC

    今日内容 JDBC基本概念 快速入门 对JDBC中各个接口和类详解 一、JDBC概述 概念:Java DataBa...

  • 【Dart】类与方法-抽象类/接口/混入/泛型

    接口 接口在Dart中就是一个类(只是用法不同)与java不同,java中的接口需要interface关键字声明;...

  • 16. 对象声明与伴生对象

    匿名内部类 匿名内部类主要是针对那些获取抽象类或者接口对象而来的。最常见的匿名内部类点击事件: 上面这个是Java...

网友评论

      本文标题:java中与接口有关的匿名类详解

      本文链接:https://www.haomeiwen.com/subject/xvtmyttx.html