接口的确很不好理解!!!!!那我来好好总结一下:

首先要理解接口是一个独立存在的,和类是不一样的东西,所以,直接用接口的定义是:

访问权限控制符 interface 接口名 [extends  接口列表] {
  常量;//接口中的变量都是默认以public static final修饰的
  抽象方法;//接口中的方法默认都是以public abstract修饰的,,注意!!!abstract 和private final  static 并存
  内部类;//接口中可以有内部类

  静态方法;//jdk8支持

  默认方法;//jdk8支持
}

 package com.xt.imp.test;

 public interface Animals {

     public static final int I=0;

     public abstract void eat();

     class heart{

     }

     public static void sleep() {

     }

     public default void work() {

     }
}

访问权限控制符:只能是public 和友好的   接口名和public 修饰的接口名一致

[extends  接口列表]代表:接口可以多继承接口,不能 继承类,对比之前的类只能单继承类

 package com.xt.imp.test;

 public interface IA extends IMammal,IB {//接口可以多继承接口,不能 继承类,对比之前的类只能单继承类

 }

  interface IB{//接口前面的访问控制符只能是public 友好的,public修饰的只能在单个文件里

 }

接口中没有构造方法,而抽象类有构造方法,抽象类不能被实例化,但是可以继承其构造方法

接口中没有 静态代码块,非静态代码块

类可以 实现多个接口。

实现接口中的抽象方法,必须严格按照重写的规则

 package com.xt.imp.test;

 public class Whales implements IMammal,Animals {//类可以实现多个接口

     @Override
public void move() {
System.out.println("移动。。。");
}
public static void main(String[] args) {
System.out.println(IMammal.i);
} //实现接口中的抽象方法,必须严格按照重写的规则
@Override
public void eat() { } }

如果一个类实现了一个接口,但但没有实现接口中的所有抽象方法,那么这个类必须是abstract类。

如果多个接口中定义了相同的抽象方法,则在实现类中只实现其中一个即可

接口回调描述的是一种现象:接口声明的变量指向其实现类实例化的对象,那么该接口变量就可以调用接口中的抽象方法。

接口没有构造方法,不能创建自己的对象,但是可以引用实现类的对象

 package com.xt.imp.test;

 public class Studens implements IMammal {

     public static void main(String[] args) {
IMammal im = new Studens();
System.out.println(im.i);
im.move();
} @Override
public void move() {
System.out.println("移动。。");
}
}

函数式接口:

 package com.xt.imp.test;

 @FunctionalInterface
public interface FunctionInterface { void ran();
}

最新文章

  1. HDU1242 BFS+优先队列
  2. ArcEngine拓扑
  3. css的小问题总结
  4. C#学习之Linq to Xml
  5. C#设计模式(8)——桥接模式(Bridge Pattern)
  6. 基于Flot可放缩的折线图
  7. php目录文件下有php-ini-development和php.ini-production。
  8. JavaScript实现数组转置
  9. iOS 9的新内容
  10. 终于解决了我的DISCUZ 无法连接到您的服务器,可能您的服务器处于防火墙后端 论坛云平台的问题~
  11. 监听iOS检测屏幕旋转状态,不需开启屏幕旋转-b
  12. MySQL单列索引和组合索引的区别介绍
  13. CFileDialog 打开文件夹文件 保存文件夹文件
  14. EasyUI - 一般处理程序 返回 Json值
  15. ASP.NET Core2.2 多用户验证和授权
  16. A - Zebras
  17. httpSession的正确理解
  18. 用lua实现ByteArray和ByteArrayVarint
  19. jQuery因mouseover,mouseout冒泡产生的闪烁问题
  20. 【MySQL-123】MySQL8.0.12 安装于Win10

热门文章

  1. DB 分库分表(1):拆分实施策略和示例演示
  2. koa 基础(四)get 传值 以及获取 get 传值
  3. android canvas drawtext 字高
  4. ftp列出具体目录的所有目录,和目录按照文件类型列出
  5. 只需体验三分钟,你就会跟我一样,爱上这款Toast
  6. 左键双击关闭pagecontrol中的一个分页即一个tabsheet,功能像遨游浏览器一样
  7. 【React自制全家桶】四、React中state与props的分析与比较
  8. Centos7 Devstack [Rocky] 重启后无法联网
  9. 1-2、kubernetes架构概述和kubernetes基础概念
  10. Redis 几个类型常用命令