引用知乎看到对接口的总结:

接口就是个招牌
比如说你饿了,看到前面有个挂着KFC的店,然后你想到可以进去买汉堡了。
KFC就是接口,我们看到了这个接口,就知道这个店会卖汉堡(实现接口)。
那么为什么我们要去定义一个接口,这个店可以直接卖汉堡啊(直接写实现方法),是的,这个店可以直接卖炸鸡腿,但没有挂KFC的招牌,我们就不知道里面卖的是啥。
我们可能就要进去问,你这里卖不卖汉堡啊(这就是反射)。很显然,这样一家家的问实在是非常麻烦(反射性能很差)。
我们可能就要记住,XX路XXX号卖汉堡,XX...(硬编码),很显然这样我们要记住的很多很多东西(代码量剧增),而且,如果有新的店卖汉堡,我们也不可能知道(不利于扩展)。
 

接口的定义如下:

[修饰符]interface<接口名>[extends<接口列表>]
{
数据成员; //默认为public static final
成员函数; //默认为public abstract
}

注意:接口可实现多重继承

接口的实现如下:

[访问修饰符]class 类名 implements[接口列表]
{
public 成员函数;
}

示例如下:

 
 interface InterFace0{
void print();
}
class InterFace1 implements InterFace0{
public void print(){
System.out.println("接口InterFace0实现");
}
}
public class InterFace {
public static void main(String args[]){
InterFace1 inter = new InterFace1();
inter.print();
}
}

接口的多重继承:

1.可以让一个接口去继承多个接口, 再用一个类来实现接口

 interface InterFace0{
void print0();
}
interface InterFace1{
void print1();
}
//接口InterFace2继承InterFace0,InterFace1
interface InterFace2 extends InterFace0,InterFace1{
}
//achieve类实现接口
class achieve implements InterFace2{
public void print0(){
System.out.println("InterFace0 print0方法");
}
public void print1(){
System.out.println("InterFace1 print1方法");
}
}
public class InterFace {
public static void main(String args[]){
achieve inter = new achieve();
inter.print0();
inter.print1();
}
}
//输出:
//InterFace0 print0方法
//InterFace1 print1方法

2.也可以让一个类去继承多个接口

 interface InterFace0{
void print0();
}
interface InterFace1{
void print1();
}
//类achieve继承InterFace0,InterFace1两个接口
class achieve implements InterFace0,InterFace1{
public void print0(){
System.out.println("InterFace0 print0方法");
}
public void print1(){
System.out.println("InterFace1 print1方法");
}
}
public class InterFace {
public static void main(String args[]){
achieve inter = new achieve();
inter.print0();
inter.print1();
}
}
//输出:
//InterFace0 print0方法
//InterFace1 print1方法
 

最新文章

  1. centos系统编译安装nginx+php环境另加独立mysql教程
  2. 数据字典生成工具之旅(5):DocX组件读取与写入Word
  3. Android 获取版本号
  4. Python torndoa mysql 模块安装
  5. linux 学习8 权限管理
  6. Codeforces Beta Round #95 (Div. 2) D.Subway
  7. 从0开始学Swift笔记整理(三)
  8. E: 软件包*需要重新安装,但是我无法找到相应的安装文件。(ubuntu14.04)
  9. 安装sklearn时出现 &quot;ImportError: DLL load failed&quot; 的解决方法
  10. express中路由设置的坑-----1
  11. 【iOS开发-60】案例学习:多组数据的tableView设置、添加右側组索引、多层数据模型设置以及valueForKeyPath
  12. 百度用AR复现朝阳门,野心渐明直指AR平台
  13. 201521123036 《Java程序设计》第13周学习总结
  14. Java安全(权限)框架 - Shiro 功能讲解 架构分析
  15. [Swift]LeetCode456. 132模式 | 132 Pattern
  16. Redis 设计与实现 (三)--持久化
  17. 解决Protege打开owl文件时程序卡死问题
  18. numpy中 array数组的shape属性
  19. 一个简单可参考的API网关架构设计
  20. DNS DHCP 路由 FTP

热门文章

  1. CentOS 7 配置静态IP
  2. Node.js 事件循环
  3. linux 下mysql 开启远程连接
  4. mpu
  5. JSON简介
  6. socketserver 分块记录
  7. codeforces 727F. Polycarp&#39;s problems
  8. js解决IE8、9下placeholder的兼容问题
  9. Java线程池使用说明
  10. web学习之开发环境的搭建