接口(interface)那点事
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(); //我是抽象方法,此处省略了abstract
- public 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 {
- @Override
- public void quickWalk() {
- // TODO Auto-generated method stub
- }
- @Override
- public void jump() {
- // TODO Auto-generated method stub
- }
- @Override
- public void fly() {
- // TODO Auto-generated method stub
- }
- }
答:用implements,将抽象方法进行具体的实现,只要你implements(实现)一个接口(interface),就必须将抽象方法进行(Override:中文称为重写)。
插播:extends与implements我将单独拉出来两篇笔记哦!!java语法:单继承、多实现、这算剧透嘛?
接口(interface)那点事的更多相关文章
- C#编程利器之三:接口(Interface)【转】
C#编程利器之三:接口(Interface) C#接口是一个让很多初学者容易迷糊的东西,用起来好象很简单,定义接口,然后在里面定义方法,通过继承与他的子类来完成具体的实现.但没有真正认识接口的作用的时 ...
- Go接口interface
目录 接口是什么? interface类型 空接口(interface{}) interface函数参数 interface变量存储的类型 类型断言 嵌入interface 接口是什么? Go 语言不 ...
- java中的接口interface
关于接口 接口描述了实现了它的类拥有什么功能.因为Java是强类型的,所以有些操作必须用接口去约束和标记.接口作为类的能力的证明,它表明了实现了接口的类能做什么. 类似与class,interface ...
- php中的抽象类(abstract class)和接口(interface)
一. 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 ...
- 14 接口-interface的定义与实现
接口的基本语法一: 1.使用interface 定义 2.接口当中的方法都是抽象方法 3.接口当中的方法都是public权限 接口的定义: interface USB { public void re ...
- 为什么不能把委托(delegate)放在一个接口(interface)当中?
stackoverflow上有人问,为什么不能把委托放在一个接口当中? 投票最多的第一个答案第一句话说,“A Delegate is just another type, so you don't g ...
- java之接口interface
接口 1.多个无关的类可以实现同一个接口 2.一个类可以实现多个无关的接口 3.与继承关系类似,接口与实现类之间存在多态性 4.定义java类的语法格式 < modifier> class ...
- 【Java 基础篇】【第六课】接口interface
Java提供的这个interface的语法,目的就是将接口从类中剥离出来,构成独立的主体. 首先加入我们定义了这个杯子接口: interface Cup { void addWater(int w); ...
- TypeScript学习指南第二章--接口(Interface)
接口(Interface) TypeScript的核心机制之一在于它的类型检查系统(type-checker)只关注一个变量的"模型(shape)" 稍后我们去了解这个所谓的形状是 ...
- Go语言学习笔记(四)结构体struct & 接口Interface & 反射
加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...
随机推荐
- iOS - App 与外设间的通信方式
1.前言 一般 iOS 开发者做 App 开发大部分时候都是通过 Http(s) 请求跟后台服务器打交道,做一些信息展示和用户交互.很少涉及到去跟外部硬件设备连接的开发.随着近年来车联网和物联网的兴起 ...
- selenium python学习笔记---添加等待时间
http://selenium-python.readthedocs.io/waits.html 有时候为了保证脚步运行的稳定性,需要在脚本中添加等待时间 添加休眠:需要引入time包,选择一个固定的 ...
- Linux内存初始化(二)identity mapping和kernel image mapping
一.前言 本文没有什么框架性的东西,就是按照__create_page_tables代码的执行路径走读一遍,记录在初始化阶段,内核是如何创建内核运行需要的页表过程.想要了解一些概述性的.框架性的东西可 ...
- RCU介绍
RCU原理: RCU(Read-Copy Update),顾名思义就是读-拷贝修改,它是基于其原理命名的.对于被RCU保护的共享数据结构,读者不需要获得任何锁就可以访问它,但写者在访问它时首先拷贝一个 ...
- 尾递归与Continuation
怎样在不消除递归的情况下防止栈溢出?(无论如何都要使用递归) 这几天恰好和朋友谈起了递归,忽然发现不少朋友对于“尾递归”的概念比较模糊,网上搜索一番也没有发现讲解地完整详细的资料,于是写了这么一篇文章 ...
- Log4Net基本配置
开源日志管理工具,项目主页:http://logging.apache.org/log4net/ 基本用法: 1.程序目录新建目录“Config”,目录内新建文件“log4net.config”,右键 ...
- 分享Memcached shell启动停止脚本
注意:要使用这个shell,必须先成功建立memcache环境 1>建立memcached文件和权限 [root@luozhonghua ~]# touch /etc/init.d/memcac ...
- CheckedComboBoxEditExtension
public static class CheckedComboBoxEditExtension { public static void BindData(this CheckedComboBoxE ...
- python标准库介绍——11 atexit 模块详解
=== atexit 模块=== (用于2.0版本及以上) ``atexit`` 模块允许你注册一个或多个终止函数(暂且这么叫), 这些函数将在解释器终止前被自动调用. 调用 ``register`` ...
- [na]代理arp导致的问题(路由卷)
已过期... 一 理论概述 \ 二 实验 实验一:代理arp在nat中的作用(实验发现一下是错的) 实验二.代理arp导致的问题 pc访问服务器想让走路由器(写32bit静态路由),右边的R arp ...