Java接口与实例化
看代码看到
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接口与实例化的更多相关文章
- java接口
一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为( ...
- java 接口和抽象类的区别
java 接口和抽象类的区别抽象类:1.含有抽象方法的类一定为抽象类,反过来抽象类,不一定含有抽象方法:2.抽象类必须用abstract来进行定义,抽象方法也必须用abstract来进行定义:3.抽象 ...
- java 接口(上)
1.接口中的方法都是抽象方法.而普通的抽象类里面不一定都是抽象方法.抽象类中必须有抽象方法,同时也可以有非抽象方法.继承抽象父类的子类中,如果依然有抽象方法,那么这个子类也是抽象类.即只要类中有抽象方 ...
- python面向对象进阶 反射 单例模式 以及python实现类似java接口功能
本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和特性. 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存 ...
- Java接口的表现形式
一.概念理解 Java接口是一些方法特征的集合,并没有方法的具体实现,类似于电源插座,可以充不同类型的电器,但是必须适配特定的接口规范.接口是抽象化的,所以其不能被实例化的(不能有构造函数,创建对象) ...
- Java 接口和抽象类差别
原文:http://blog.csdn.net/sunboard/article/details/3831823 1.概述 一个软件设计的好坏,我想非常大程度上取决于它的总体架构,而这个总体架构事实上 ...
- 对接第三方平台JAVA接口问题推送和解决
前言 本节所讲为实际项目中与第三方对接出现的问题最后还是靠老大解决了问题以此作为备忘录,本篇分为三小节,一小节解析Java加密接口数据,二小节解析XML文件需注意问题,最后一节则是请求Java Soa ...
- java:接口特性 接口与抽象类/普通类的区别
接口 书面定义: Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 在ja ...
- java 接口详解
定义接口 接口继承和实现继承的规则不同,一个类只有一个直接父类,但可以实现多个接口.Java 接口本身没有任何实现,只描述 public 行为,因此 Java 接口比 Java 抽象类更抽象化.Jav ...
随机推荐
- 洛谷 P1092 虫食算 Label:dfs
题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 +8468#6633 44445509678 其中# ...
- js中eval详解,用Js的eval解析JSON中的注意点
先来说eval的用法,内容比较简单,熟悉的可以跳过eval函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句.如果s语句执行结果是一个值,则返回此值,否则返回undefined. 需要 ...
- 【BZOJ】3771: Triple
http://www.lydsy.com/JudgeOnline/problem.php?id=3771 题意:n个带价值互不相同的物品,每次可以取1.2.3个物品,问能得到的所有的价值和这个价值的方 ...
- 【JAVA】 @override报错的解决方法
有时候Java的Eclipse工程换一台电脑后编译总是@override报错,把@override去掉就好了,但不能从根本上解决问题,因为有时候有@override的地方超级多. 原因:这是jdk的问 ...
- 使用SDWebImage下载图片,sharedDownloader方法下载成功,new 方法下载失败
一,经历 1.使用 new 方法创建下载对象时,下载图片总是失败,而且不会执行成功或失败后的回调. 2.参考别人的代码,用的是sharedDownloader来创建下载对象,可以顺利下载图片. 3.看 ...
- Linux_记录ping命令的日志包括时间戳
while true; do ping -c 1 www.baidu.com | awk '{print "["strftime("%F %H:%M:%S")& ...
- GO语言练习:channel 缓冲机制
1.代码 2.运行 3.解析 1.代码 buffer.go package main import ( "fmt" "time" ) func readThre ...
- memcached 的安装与使用
准备条件:下载memcached的服务器端memcached-1.2.1.win32.zip(虽然最新版本已经是1. 4.6了,但win版本的好像还一直未更新,或找不到.) A.windows上的安装 ...
- Oracle 新手问答
存储过程中,return后,如果没有写明提交(commit)或回滚(rollback),会默认提交吗?答:不会.如果修改了数据,又没有写明,则会将数据锁定在那里! 存储过程中,调用子存储过程异常时,在 ...
- java之redis篇(spring-data-redis整合一)
redis的知识:官网 1.利用spring-data-redis整合 项目使用的pom.xml: <project xmlns="http://maven.apache.org/PO ...