接口(interface)那点事

来源:互联网 发布:神探夏洛克第四季知乎 编辑:程序博客网 时间:2024/05/22 11:44

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

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


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

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

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

3、interface的小小规则

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

public interface MyInterface {public String name = "test"; //这里隐藏了static final ,你不写,编译器也会给你默认加上static 与 final,相当于简写啦}
既然说是static与final的变量,怎么不写编译器也不报错昵?坑?

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

public interface MyInterface {public static final String name = "test"; //显式的写上static与final 也一样啦,人啊越进步越懒,谁老想写啊}
插播:这下子知道为啥接口的变量,必须要你初始化啦吧?哈哈,final嘛,所以嘛哈哈。。


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

public interface MyInterface {public static final String name = "test";public void walk(); //我是抽象方法,此处省略了abstractpublic void jump();  //我是抽象方法}
疑问:怎么回事?抽象方法不写abstract也可以?

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

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


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

public interface MyInterface { static final String name = "test"; //默认给你加上public的,放心哥们 void walk();  //抽象方法也同理,隐式的有public的哦 void jump(); abstract void fly();}
隐式与显式,真是精髓思想,记得人很懒………………

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

public interface MyInterface extends FirInterface, SecInterface, ThirdInterface{ static final String name = "test"; void jump(); abstract void fly();}
你没看错,还用的关键字extends,哈哈,java牛逼呀。。接口可不能extends一个类、也不能implements一个接口。接口可不能extends一个类、也不能implements一个接口。接口可不能extends一个类、也不能implements一个接口。(重要的事情再说三遍)。。。


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

public class HelloInterface implements MyInterface {@Overridepublic void quickWalk() {// TODO Auto-generated method stub}@Overridepublic void jump() {// TODO Auto-generated method stub}@Overridepublic void fly() {// TODO Auto-generated method stub}}
答:用implements,将抽象方法进行具体的实现,只要你implements(实现)一个接口(interface),就必须将抽象方法进行(Override:中文称为重写)。


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







0 0