看代码看到

public Runnable r = new Runnable()
{
@Override
public void run()
{
...
}
}

接口不能new ,不过可以生成一个匿名类,省略了写一个具体类实现接口的开销。

public class Main {

    public static void main(String[] args)  {
String a=new CustomerImpl().sayHello("hongda");
System.out.println(a);
String b=new Customer(){
public String sayHello(String name){
return "Hello2 "+name;
}
}.sayHello("hongdada");
System.out.println(b); }
} interface Customer {
public String sayHello(String name);
} class CustomerImpl implements Customer {
@Override
public String sayHello(String name) {
return "Hello, " + name;
}
}
Hello, hongda
Hello2 hongdada

如果接口内有多个方法呢?

public class Main {

    public static void main(String[] args)  {
String a=new CustomerImpl().sayHello("hongda");
System.out.println(a);
String b=new Customer(){
public String sayHello(String name){
return "Hello2 "+name;
}
}.sayHello("hongdada");
System.out.println(b); }
} interface Customer {
public String sayHello(String name);
public int Add(int a ,int b);
} class CustomerImpl implements Customer {
@Override
public String sayHello(String name) {
return "Hello, " + name;
}
@Override
public int Add(int a ,int b){
return a+b;
}
}
Error:(8, 32) java: <匿名com.company.Main$1>不是抽象的, 并且未覆盖com.company.Customer中的抽象方法Add(int,int)

匿名类内部实现接口全部方法:

public class Main {

    public static void main(String[] args)  {
String a=new CustomerImpl().sayHello("hongda");
System.out.println(a);
String b=new Customer(){
public String sayHello(String name){
return "Hello2 "+name;
}
public int Add(int a ,int b){
return a+b;
}
}.sayHello("hongdada");
System.out.println(b); }
} interface Customer {
public String sayHello(String name);
public int Add(int a ,int b);
} class CustomerImpl implements Customer {
@Override
public String sayHello(String name) {
return "Hello, " + name;
}
@Override
public int Add(int a ,int b){
return a+b;
}
}
Hello, hongda
Hello2 hongdada

这种实现接口方式其实就是一个实现一个继承接口的匿名类。

http://blog.sina.com.cn/s/blog_70441c8e0101sgnf.html

Java接口与实例化的更多相关文章

  1. java接口

    一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为( ...

  2. java 接口和抽象类的区别

    java 接口和抽象类的区别抽象类:1.含有抽象方法的类一定为抽象类,反过来抽象类,不一定含有抽象方法:2.抽象类必须用abstract来进行定义,抽象方法也必须用abstract来进行定义:3.抽象 ...

  3. java 接口(上)

    1.接口中的方法都是抽象方法.而普通的抽象类里面不一定都是抽象方法.抽象类中必须有抽象方法,同时也可以有非抽象方法.继承抽象父类的子类中,如果依然有抽象方法,那么这个子类也是抽象类.即只要类中有抽象方 ...

  4. python面向对象进阶 反射 单例模式 以及python实现类似java接口功能

    本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和特性. 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存 ...

  5. Java接口的表现形式

    一.概念理解 Java接口是一些方法特征的集合,并没有方法的具体实现,类似于电源插座,可以充不同类型的电器,但是必须适配特定的接口规范.接口是抽象化的,所以其不能被实例化的(不能有构造函数,创建对象) ...

  6. Java 接口和抽象类差别

    原文:http://blog.csdn.net/sunboard/article/details/3831823 1.概述 一个软件设计的好坏,我想非常大程度上取决于它的总体架构,而这个总体架构事实上 ...

  7. 对接第三方平台JAVA接口问题推送和解决

    前言 本节所讲为实际项目中与第三方对接出现的问题最后还是靠老大解决了问题以此作为备忘录,本篇分为三小节,一小节解析Java加密接口数据,二小节解析XML文件需注意问题,最后一节则是请求Java Soa ...

  8. java:接口特性 接口与抽象类/普通类的区别

    接口 书面定义: Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 在ja ...

  9. java 接口详解

    定义接口 接口继承和实现继承的规则不同,一个类只有一个直接父类,但可以实现多个接口.Java 接口本身没有任何实现,只描述 public 行为,因此 Java 接口比 Java 抽象类更抽象化.Jav ...

随机推荐

  1. 【NOI2016】区间 题解

    题目大意: 有n个区间,当有m个区间有公共部分时,求m个区间长度的最大值与最小值之差的最小值. 思路: 按区间的长度从小到大排序,可知连续的几个区间最优,则用两个指针指其头尾,线性扫描,再用线段树区间 ...

  2. Leetcode Median of Two Sorted Arrays

    There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted ...

  3. 【noiOJ】p8210

    10:河中跳房子 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 每年奶牛们都要举办各种特殊版本的跳房子比赛,包括在河里从一个岩石跳到另一个岩石.这项激动人心 ...

  4. BZOJ3835: [Poi2014]Supercomputer

    Description Byteasar has designed a supercomputer of novel architecture. It may comprise of many (id ...

  5. thinkphp常用Config.php配置项

    <?php return array( //'配置项'=>'配置值' 'DB_HOST' => 'localhost', 'DB_USER' => 'root', 'DB_PW ...

  6. 再说memcache的multiget hole(无底洞)

    关键词:multiget hole,memcache 适用于:java,php 基础知识背景: 1)multiget 是什么:     multiget 指的是从 memcache(或其他分布式缓存) ...

  7. js判断微信浏览器

    function is_weixin(){ //检查是否是微信浏览器 var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroMes ...

  8. Hadoop_初识

    一. 什么是Hadoop Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分布式底层细节的情况下,开发分布式程序. 充分利用集群的威力进行高速运算和存储. Hado ...

  9. unity3d插件Daikon Forge GUI 中文教程7-高级控件slider的使用

    3.6.slider滑块              我们说说前面这个图片.对象 Appearance: Atlas 图集: Track 滑块的轨道图片 Back color滑块的轨道图片的主颜色. O ...

  10. P4行为模型BMV2依赖关系安装:thrift nanomsg nnpy安装

    由于安装p4factory的步骤需要OF的支持,我需要下载p4的行为模型BMV2: thrift是支持BMV2的软件框架:nanomsg是一个实现了几种"可扩展协议"的高性能通信库 ...