接口不是类,而是一个特殊的名称,使用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. jQuery-安装方法(2类)

    一.下载到本地,调用本地jQuery库 下载地址:http://jquery.com/download/ 共有两个版本的 jQuery 可供下载: 1.精简版:用于实际的网站中,已被精简和压缩. 2. ...

  2. UVA Stacks of Flapjacks 栈排序

    题意:给一个整数序列,输出每次反转的位置,输出0代表排序完成.给一个序列1 2 3 4 5,这5就是栈底,1是顶,底到顶的位置是从1~5,每次反转是指从左数第i个位置,将其及其左边所有的数字都反转,假 ...

  3. Maven 虐我千百遍,我待 Maven 如初恋

    前言 在如今的互联网项目开发当中,特别是Java领域,可以说Maven随处可见.Maven的仓库管理.依赖管理.继承和聚合等特性为项目的构建提供了一整套完善的解决方案,可以说如果你搞不懂Maven,那 ...

  4. Return-to-dl-resolve浅析

    本文介绍一种CTF中的高级rop技巧-Return-to-dl-resolve,不久前的0CTF中的babystack和blackhole就用到了这个技巧. 预备知识 在开始本文前希望大家能预先了解一 ...

  5. 黑马基础阶段测试题:创建一个存储字符串的集合list,向list中添加以下字符串:”C++”、”Java”、” Python”、”大数据与云计算”。遍历集合,将长度小于5的字符串从集合中删除,删除成功后,打印集合中的所有元素

    package com.swift; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; ...

  6. 人品计算器 JFrame 窗体软件版 JPanel JTextField JTextArea JButtton JLabel setContentPane Swing包(用户界面工具包)

    import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.eve ...

  7. 为什么90%的IT人员都不适合做老大?

    什么是格局? 格局就是能够很好的平衡短期利益和长期利益. 过分注重短期利益的人必然会失去长期利益,到头来一定会很普通. 例如:跳槽不断,可能短期薪资会增长,但长期来看后劲可能会不足,未来发展空间会变窄 ...

  8. url传参及重定向

    成功跳转$this -> success('提示语',跳转路径,返回的数据,时间,发送的 Header 信息)跳转失败$this -> error('提示语',跳转路径,返回的数据,时间, ...

  9. 菜鸟学Linux - 设置文件/文件夹的权限

    在Linux中,我们可以对文件或文件夹设置权限(r,w,x,-).然而,对文件和文件夹的权限设置,具有不同的意义.下面,通过几个例子来了解一下权限的意义所在.在开始之前,我们需要了解几个修改权限的命令 ...

  10. 17,基于scrapy-redis两种形式的分布式爬虫

    redis分布式部署 1.scrapy框架是否可以自己实现分布式? - 不可以.原因有二. 其一:因为多台机器上部署的scrapy会各自拥有各自的调度器,这样就使得多台机器无法分配start_urls ...