1、接口(interface),在 java中有这个类型哦,这是语法哦。

  1. public interface MyInterface {
  2. }

语法还是很清晰的哦, 类的关键字是class、而接口改为interface即可哈。

2、接口(interface)与 接口(API) ?

答:相信大家伙一直没明白吧,老话再讲,记得中文博大精深,刚好interface与API都翻译为接口,而API全称是应用程序接口(Application Program Interface)。

API昵指的是提供给他人调用的方法或者函数,具体一点讲昵就是 public 的 方法。而interface就是java中规定一种数据类型(数据结构、对象组合)。

3、interface的小小规则

a、interface中可以有变量,而且它必须是静态(static)的、而且必须是final的。

  1. public interface MyInterface {
  2. public String name = "test"; //这里隐藏了static final ,你不写,编译器也会给你默认加上static 与 final,相当于简写啦
  3. }

既然说是static与final的变量,怎么不写编译器也不报错昵?坑?

答:这里要插播一个思想,那就是隐式与显式的思想。因为interface要求必须是static加上final。所以你不写也没关系,默认(隐式)就会给你加上static与final。

  1. public interface MyInterface {
  2. public static final String name = "test"; //显式的写上static与final 也一样啦,人啊越进步越懒,谁老想写啊
  3. }

插播:这下子知道为啥接口的变量,必须要你初始化啦吧?哈哈,final嘛,所以嘛哈哈。。

b、interface里面的方法,必须全部是抽象方法

  1. public interface MyInterface {
  2. public static final String name = "test";
  3. public void walk(); //我是抽象方法,此处省略了abstract
  4. public void jump();  //我是抽象方法
  5. }

疑问:怎么回事?抽象方法不写abstract也可以?

答:哈哈,刚才上面就讲啦?语法已经规定所有方法必须是抽象方法,所以嘛你可以不写abstarct,默认(隐式)编译器会给你加上abstract,呵呵

  1. public interface MyInterface {
  2. public static final String name = "test";
  3. public abstract void fly(); //也可以显示的加上abstract,但人啊就是越来越懒
  4. }

c、访问权限,接口啊接口,就是为了给别人用的,记得无论你写与不写,所有的一切都是public

  1. public interface MyInterface {
  2. static final String name = "test"; //默认给你加上public的,放心哥们
  3. void walk();  //抽象方法也同理,隐式的有public的哦
  4. void jump();
  5. abstract void fly();
  6. }

隐式与显式,真是精髓思想,记得人很懒………………

d、接口可以继承一个接口,想不到吧,接口可以继承(扩展)多个、多个、多个(重要的事说三遍)接口。

  1. public interface MyInterface extends FirInterface, SecInterface, ThirdInterface{
  2. static final String name = "test";
  3. void jump();
  4. abstract void fly();
  5. }

你没看错,还用的关键字extends,哈哈,java牛逼呀。。接口可不能extends一个类、也不能implements一个接口。接口可不能extends一个类、也不能implements一个接口。接口可不能extends一个类、也不能implements一个接口。(重要的事情再说三遍)。。。

e、有了接口我们怎么用啊? 我们要将我们的类去实现接口,要用到implements关键字啦

  1. public class HelloInterface implements MyInterface {
  2. @Override
  3. public void quickWalk() {
  4. // TODO Auto-generated method stub
  5. }
  6. @Override
  7. public void jump() {
  8. // TODO Auto-generated method stub
  9. }
  10. @Override
  11. public void fly() {
  12. // TODO Auto-generated method stub
  13. }
  14. }

答:用implements,将抽象方法进行具体的实现,只要你implements(实现)一个接口(interface),就必须将抽象方法进行(Override:中文称为重写)。

插播:extends与implements我将单独拉出来两篇笔记哦!!java语法:单继承、多实现、这算剧透嘛?

接口(interface)那点事的更多相关文章

  1. C#编程利器之三:接口(Interface)【转】

    C#编程利器之三:接口(Interface) C#接口是一个让很多初学者容易迷糊的东西,用起来好象很简单,定义接口,然后在里面定义方法,通过继承与他的子类来完成具体的实现.但没有真正认识接口的作用的时 ...

  2. Go接口interface

    目录 接口是什么? interface类型 空接口(interface{}) interface函数参数 interface变量存储的类型 类型断言 嵌入interface 接口是什么? Go 语言不 ...

  3. java中的接口interface

    关于接口 接口描述了实现了它的类拥有什么功能.因为Java是强类型的,所以有些操作必须用接口去约束和标记.接口作为类的能力的证明,它表明了实现了接口的类能做什么. 类似与class,interface ...

  4. php中的抽象类(abstract class)和接口(interface)

    一. 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 ...

  5. 14 接口-interface的定义与实现

    接口的基本语法一: 1.使用interface 定义 2.接口当中的方法都是抽象方法 3.接口当中的方法都是public权限 接口的定义: interface USB { public void re ...

  6. 为什么不能把委托(delegate)放在一个接口(interface)当中?

    stackoverflow上有人问,为什么不能把委托放在一个接口当中? 投票最多的第一个答案第一句话说,“A Delegate is just another type, so you don't g ...

  7. java之接口interface

    接口 1.多个无关的类可以实现同一个接口 2.一个类可以实现多个无关的接口 3.与继承关系类似,接口与实现类之间存在多态性 4.定义java类的语法格式 < modifier> class ...

  8. 【Java 基础篇】【第六课】接口interface

    Java提供的这个interface的语法,目的就是将接口从类中剥离出来,构成独立的主体. 首先加入我们定义了这个杯子接口: interface Cup { void addWater(int w); ...

  9. TypeScript学习指南第二章--接口(Interface)

    接口(Interface) TypeScript的核心机制之一在于它的类型检查系统(type-checker)只关注一个变量的"模型(shape)" 稍后我们去了解这个所谓的形状是 ...

  10. Go语言学习笔记(四)结构体struct & 接口Interface & 反射

    加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...

随机推荐

  1. INFORMATION_SCHEMA数据库介绍

    删除mysql数据库某一张主键表的所有外键关系 SELECT CONCAT('alter table ', TABLE_NAME , ' drop foreign key ', constraint_ ...

  2. JavaScript和JQuery中的事件\委托链\事件冒泡\事件捕获,兼容所有浏览器

    有做过北大青鸟培训讲师经验的我,如今在一家公司做技术部经理的职位,发现有很多程序员的基本功相当糟糕,在组织企业内部培训时讲解了一些案例,总结了一些经典代码,希望对自己和有需要的人提供一些帮助吧: Ja ...

  3. 【js】sort()

    //为了实现排序,sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串, //以确定如何排序.即使数组中的每一项都是数值,sort()方法比较的也是字符串, var v ...

  4. (三)RocketMq入门之独立线程处理业务

    一.示例代码 这段代码实现了一个独立线程监听在一个特殊的消息队列上,一旦收到消息就处理并发送给MQ,然后推送给所有的消费者. import com.alibaba.rocketmq.client.ex ...

  5. FPGA管脚约束

    Edit → language templates : 打开即可查看基本语法. 一.xilinx中的约束文件 1.约束的分类 利用FPGA进行系统设计常用的约束主要分为3类. (1)时序约束:主要用于 ...

  6. 啸叫抑制(howling suppression)

    作者:桂. 时间:2017-05-16 链接:http://www.cnblogs.com/xingshansi/p/6862683.html 前言 下午看到群里讨论有人提到这个问题,记录一下. 一. ...

  7. 分享一:关于mysql中避免重复插入记录方法

    一: INSERT ON DUPLICATE KEY UPDATE 如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重 ...

  8. javascript 二维数组的例子

    javascript没有二维数组.所有自定义了一个数组类,下面是实例代码. 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trans ...

  9. thinkphp 表单一些

    <tr class="tr rt"> <td colspan="4" class="lt"> <select ...

  10. [Docker] Docker Hub加速

    一.缘由: 今天学习Flask,书上建议用Docker,那我就安装了DockerToolBox(WIN10系统只能用toolbox).其中从docker hub拉取ubuntu镜像时 docker p ...