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

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

访问权限控制符 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();
}

java中接口知识点大总结的更多相关文章

  1. Java中接口和抽象类的比較

    Java中接口和抽象类的比較-2013年5月写的读书笔记摘要 1. 概述 接口(Interface)和抽象类(abstract class)是 Java 语言中支持抽象类的两种机制,是Java程序设计 ...

  2. 浅谈Java中接口与抽象类的异同

    浅谈Java中接口与抽象类的异同 抽象类和接口这两个概念困扰了我许久,在我看来,接口与抽象类真的十分相似.期间也曾找过许许多多的资料,参考了各路大神的见解,也只能是简简单单地在语法上懂得两者的区别.硬 ...

  3. 【JAVA零基础入门系列】Day9 Java中的那个大数值

    什么是大数值?用脚趾头想也知道,当然是"大"的数值(233).Java中有两个用于表示大数值的类,BigInteger和BigDecimal,那到底能表示多大的数值呢?理论上,可以 ...

  4. 转载 - java中接口的向上转型。和多态性

    发现一篇对接口总结很精简的文章 1.在java中接口就是一个完全抽象的类,跟抽象类一样不能产生对象,但是可以作为对象的引用,可以由其实现类向上转型,它就跟超类一样, 向上转型了,可以很好的利用接口,可 ...

  5. Java 中接口和抽象类的 7 大区别!

    本文已收录<Java常见面试题>:https://gitee.com/mydb/interview ​ Java 是一门面向对象的编程语言,面向对象的编程语言有四大特征:抽象.封装.继承和 ...

  6. java中接口和抽象类有什么区别,举例!

    2)接口和抽象类有什么区别?答:马克-to-win:抽象类里可以有实现的方法,接口里不能有,所以相对来讲各方面实现都简单(尤其动态方法调度).另外:类可以实现多个接口.反过来说,也正是抽象类一个致命伤 ...

  7. 关于java中接口定义常量和类定义常量的区别

    /** * * @author YZJ * @Description java中定义常量的最佳方法 */ public final class Contants{ /** * @Description ...

  8. java中接口之间的继承

    最近在读一些源码的时候突然发现了一个很神奇的东西,它的原始形态是这样的: 在这行代码中,BlockingDeque.BlockingQueue和Deque是三个接口.刚发现这个问题时,我是十分吃惊的, ...

  9. JAVA中接口与抛出异常的相关知识

    1.接口概念:接口可以理解为一种特殊的类,由全局常量和公共的抽象方法所组成. 类是一种具体实现体,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,它只 ...

随机推荐

  1. 前端中的 Attribute & Property

    为了在翻译上显示出区别,Attribute一般被翻译为特性,Property被译为属性. 在使用上面,Angular已经表明态度 Template binding works with propert ...

  2. C++入门经典-例8.2-构造函数的访问顺序

    1:父类和子类中都有构造函数和析构函数,那么子类对象在创建时是父类先进行构造还是子类先进行构造?同样,在子类对象释放时,是父类先进行释放,还是子类先进行释放?这都是有先后顺序的.答案是当从父类派生一个 ...

  3. php下intval()和(int)转换使用与区别

    没啥区别,一般用(int),另外还有 float, string, array 等 intval()而言,如果参数是字符串,则返回字符串中第一个不是数字的字符之前的数字串所代表的整数值.如果字符串第一 ...

  4. Mathematica——绘制3D图形

    Plot3D Plot3D[ + y, {x, -, }, {y, -, }] ListPointPlot3D 绘制点集 ListPointPlot3D[{{, , }, {, , }}, Color ...

  5. jstack+jdb命令查看线程及死锁堆栈信息

    如果程序挂死,有时使用jstack查看进程中线程信息时,需要添加上-F参数,此时如果有死锁信息,则可能不会打印出死锁堆栈信息,使用jdb则可以查看当前死锁线程的运行堆栈. 如下模拟一个简单的死锁程序 ...

  6. TensorFlow 学习(3)——MNIST机器学习入门

    通过对MNIST的学习,对TensorFlow和机器学习快速上手. MNIST:手写数字识别数据集 MNIST数据集 60000行的训练数据集 和 10000行测试集 每张图片是一个28*28的像素图 ...

  7. electron关于无边框窗口无法拖拽移动以及点击事件失效的问题

    为了使窗口无边框,使得在某些时候让项目看起来更美观,所以在创建窗口的时候通过设置 frame 属性的值为 false 来创建无边框窗口.但是无边框窗口会产生无法移动的问题,对于这个问题我们可以在渲染进 ...

  8. PreparedStatement执行sql語句

    import com.loaderman.util.JdbcUtil; import java.sql.Connection; import java.sql.PreparedStatement; i ...

  9. Tomcat 8.5 配置自动从http跳转https

    1.需要修改Tomcat目录下的conf/server.xml文件两处地方,Http端口,从默认的8080改为80:Https端口从8443改为443:(80\443分别都是http/https默认端 ...

  10. Node.js的事件轮询Event Loop原理

    Node.js的事件轮询Event Loop原理解释 事件轮询主要是针对事件队列进行轮询,事件生产者将事件排队放入队列中,队列另外一端有一个线程称为事件消费者会不断查询队列中是否有事件,如果有事件,就 ...