接口不是类,而是一个特殊的名称,使用interface关键字。子类可以实现多个接口。

接口实现:

public class Child extends Parent implements InterfaceOne,InterfaceTwo{}

接口只提供了对象的行为签名,而没有任何实现。

它不可以直接被实例化,它只能在被子类实现为一个具体类型后才能使用。

InterfaceOne one = new Child();

使用接口的同时,又带来面向父类编程的优势,代码更加通用、清晰。

接口的定义:

public interface Service{

int data = 10;

void send(int data);

int receive();

}

接口定义知识将原来定义类的class关键字换成interface关键字。

接口中的方法定义和通常的方法定义一样,只是没有实现体。接口中的方法只能是公有的public abstract,可以省略不写。接口中的data变量看似是一个成员变量,但事件上默认它是一个公有的静态的final变量(即常量)。完整的Service类如下:

public interface Service{

public static final int data = 10;

public abstract void send(int data);

public abstract int receive();

}

接口是统一的服务,客户都是可以全部使用的。

接口的实现:

实现Service接口:

public class ConcreteService implements Service{

public void send(int data){

System.out.println("data");

}

public int receive(){

return 10;}

}

attentions:

完全实现了所有所有接口方法的类就是一个具体的类。

部分实现了接口方法的类是一个抽象的类。

接口通过实现(implements)演变成为一个类(class)。

接口可以通过继承(extends)创建新的子接口。

可以把接口理解为一个完全抽象的类,只是用法稍有区别。

(1)可以多重实现(类似多重继承,但是更纯净),使用关键字implements实现到类的演变。

(2)方法默认全部公有public,所有方法只有定义,没有实现。

(3)所有变量默认是公有静态final的常量,而且必须被显示初始化。

其他与普通类使用方法没有任何区别。

 public interface Service{
void send(int data);
int receive();
}
abstract class AbstractService implements Service{
public void send(int data){
System.out.println(data);
}
}
class ConcreteService extends AbstractSevice{
public int receive(){
return 10;
}
public static void main(String[] args){
Service service = new ConcreteService();
Service.send(10);
}
}

当多重实现多个接口时,可能会出现被实现函数混淆问题。此时问题无法解决,只能尽可能避免此问题的出现。

接口和抽象类有很多相似之处,但是:

(1)接口中不能有构造方法。

(2)接口中没有普通成员变量,只有常量。

(3)接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

(4)接口中的抽象方法类型只能是public类型的,默认是public abstract类型。

(5)接口中不能包含静态方法。

(6)抽象类和接口中都可以包含静态成员变量。但接口中定义的变量只能是public static final类型,并且默认为public static final 类型。

(7)一个类可以实现多个接口,但只能继承一个类。

Java学习5之接口的更多相关文章

  1. Java 学习笔记(7)——接口与多态

    上一篇说了Java面向对象中的继承关系,在继承中说到:调用对象中的成员变量时,根据引用类型来决定调用谁,而调用成员方法时由于多态的存在,具体调用谁的方法需要根据new出来的对象决定,这篇主要描述的是J ...

  2. java学习——JDK1.8接口和实现类

    Java 8 新特性:接口的静态方法和默认方法 https://blog.csdn.net/sun_promise/article/details/51220518 接口的默认方法和静态方法 http ...

  3. java学习面向对象之接口

    上一节当中我们说道抽象类,抽象类当中的方法可以是抽象的也可以是非抽象的,那么当抽象类中所有方法都是抽象的时候,我们就可以把它重新定义为接口.代码示例: abstract class Animal { ...

  4. Java学习笔记 07 接口、继承与多态

    一.类的继承 继承的好处 >>使整个程序架构具有一定的弹性,在程序中复用一些已经定义完善的类不仅可以减少软件开发周期,也可以提高软件的可维护性和可扩展性 继承的基本思想 >>基 ...

  5. java学习之(接口)

    使用接口 接口不能用于创建实例,但接口可以用于声明引用类型变量.当使用接口来声明引用类型变量时,这个引用类型变量必须引用到其实现类的对象.除此之外,接口的主要用途就是被实现类实现.归纳起来,接口主要有 ...

  6. Java学习笔记之接口

    一.接口的概念与定义 首先考虑一个简单的接口的定义: public interface Output { int MAX_LINE = 40; void out(); void getData(Str ...

  7. java学习--抽象类与接口

    一.抽象 在使用抽象类时需要注意几点: 1.抽象类不能被实例化,实例化的工作应该交由它的子类来完成,它只需要有一个引用即可. 2.抽象方法必须由子类来进行重写. 3.只要包含一个抽象方法的抽象类,该方 ...

  8. Java学习之List接口

    List接口 List接口的定义如下: public interface List<E>extends Collection<E> 可以发现List接口时Collection接 ...

  9. 1)Java学习笔记:接口和抽象类的异同

    Java接口和抽象类很像,他们有哪些相同点和异同点呢,下面我们做一个小结 相同 ① 都不能被实例化,都位于继承树的顶端,用于被实现或者继承 ② 都可以包含抽象方法,实现接口或者继承抽象类的普通子类都必 ...

  10. Java学习笔记之——接口

    接口(interface)和抽象类 为何要定义接口?------>实现不同的方法 Java的设计思想是单继承和多实现 类:属性和方法的集合,方法围绕着属性转,可以理解为自定义的类型 接口:与类是 ...

随机推荐

  1. TestNG并发测试包

    https://www.yiibai.com/testng/basic-annotations.html

  2. Java分代的思考

    我们都知道,java的gc是基于java的分代前提,不管是CMS还是G1,都是基于分代思想:老年代和新生代 思考一:为什么可以分代? 1.java中对象的生命周期是不一样的,在gc中对应年龄的概念. ...

  3. NOIP2018赛前停课集训记——最后的刷板子计划

    前言 再过两天就\(NOIP2018\)了. 于是,我决定不做其他题目,开始一心一意刷板子了. 这篇博客记录的就是我的刷板子计划. [洛谷3383][模板]线性筛素数 这种普及-的题目我还写挂了两次( ...

  4. Tarjan在图论中的应用(一)——用Tarjan来实现强连通分量缩点

    前言 \(Tarjan\)是一个著名的将强连通分量缩点的算法. 大致思路 它的大致思路就是在图上每个联通块中任意选一个点开始进行\(Tarjan\)操作(依据:强连通分量中的点可以两两到达,因此从任意 ...

  5. 调试工具DEBUG的使用(8086)

    有关CPU和存储单元的概念在前一节我们已经了解,那么如何观察实际机器内部的情况呢?能不能看到具体的寄存器.标志.存储单元的内容呢?可不可以修改和控制它们呢? DEBUG这个有力工具,就可以深入到机器内 ...

  6. 第四章 用javascript和DOM去建立一个图片库

    把整个图片库的浏览链接集中安排在你的图片库里,只在用户点击了这个主页里的某个图片链接时才把相应的图片传送给它. 代码如下: <body> <ul> <li> < ...

  7. Andrew NG 自动化所演讲(20140707):DeepLearning Overview and Trends

    出处 以下内容转载于 网友 Fiona Duan,感谢作者分享 (原作的图片显示有问题,所以我从别处找了一些附上,小伙伴们可以看看).最近越来越觉得人工智能,深度学习是一个很好的发展方向,应该也是未来 ...

  8. 跟我一起从零开始学WCF系列课程

    http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/Series/WCF_Begin.aspx 服务和协定 服务协定使 ...

  9. windows平台下MongoDB安装和环境搭建

    下载安装包或者压缩包 添加db存储和日志存储文件夹 添加服务.配置环境变量.启动Mongo 本例:安装路径:D:Program Files/MongoDB 配置文件的路径:D:MongoDB 一.安装 ...

  10. 问题009:java当中的关键字有哪些?在Editplus文本编辑软件中是什么颜色的?java当中的标识符有什么要求?Java中注释分为几类?

    (1) public 公共的,表示访问的权限 (2) private 私有的,表示一种访问权限 (3) class 类关键字,表示定义一个类 java中的关键字都是大写的还是小写的?小写的,在Edit ...