zoukankan      html  css  js  c++  java
  • java中接口知识点大总结

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

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

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

      静态方法;//jdk8支持

      默认方法;//jdk8支持
    }

     1 package com.xt.imp.test;
     2 
     3 public interface Animals {
     4 
     5     public static final int I=0;
     6     
     7     public abstract void eat();
     8     
     9     class heart{
    10         
    11     }
    12     
    13     public static void sleep() {
    14         
    15     }
    16     
    17     public default void work() {
    18         
    19     }
    20 }

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

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

    1 package com.xt.imp.test;
    2 
    3 public interface IA extends IMammal,IB {//接口可以多继承接口,不能 继承类,对比之前的类只能单继承类
    4 
    5 }
    6 
    7  interface IB{//接口前面的访问控制符只能是public 友好的,public修饰的只能在单个文件里
    8     
    9 }

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

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

    类可以 实现多个接口。

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

     1 package com.xt.imp.test;
     2 
     3 public class Whales implements IMammal,Animals {//类可以实现多个接口
     4 
     5     @Override
     6     public void move() {
     7         System.out.println("移动。。。");
     8     }
     9     public static void main(String[] args) {
    10         System.out.println(IMammal.i);
    11     }
    12     
    13     //实现接口中的抽象方法,必须严格按照重写的规则
    14     @Override
    15     public void eat() {
    16         
    17     }
    18     
    19 }

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

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

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

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

     1 package com.xt.imp.test;
     2 
     3 public class Studens implements IMammal {
     4 
     5     public static void main(String[] args) {
     6         IMammal im = new Studens();
     7         System.out.println(im.i);
     8         im.move();
     9     }
    10 
    11     @Override
    12     public void move() {
    13         System.out.println("移动。。");
    14     }
    15 }

    函数式接口:

    1 package com.xt.imp.test;
    2 
    3 @FunctionalInterface
    4 public interface FunctionInterface {
    5 
    6     void ran();
    7 }
  • 相关阅读:
    QTP的那些事有关正则表达式匹配对象的一个小注意点
    ant 中用到的各种变量的方式
    Host prepare for your automation work
    mybatis3进行模糊查询的总结
    QTP的那些事—QTP11+QC11框架整理源码(个人原创)2012615更新版
    QTP的那些事场景恢复的使用(加入场景恢复却不起作用)
    hudson搭建第一步环境配置
    SQL SERVER 查看和杀掉死锁的进程代码
    SQL Server创建和使用临时表(转)
    从HTML代码中提取文字,去掉HTML的标记
  • 原文地址:https://www.cnblogs.com/lyxcode/p/9063012.html
Copyright © 2011-2022 走看看