2019-10-25-23:22:23

目录

  1.接口的概念

  2.接口的定义格式

  3.接口包含的内容

  4.接口的使用步骤

  5.继承父类并实现多个接口

  6.接口之间的多继承


接口的概念

  接口是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员,其中最终哟啊的内容就是其家中的抽象方法

接口的定义格式

  public interface 接口名称{

    接口内容

  }

接口包含的内容

  1.常量

 package demopra.Interface;
//定义一个接口
public interface InterfaceContent01 {
//接口包含的内容(常量)
double PI = 3.141592654;
}

  2.抽象方法

 package demopra.Interface;
//定义一个接口
public interface InterfaceContent02 {
//接口包含的内容(抽象方法)
public abstract void method();//(public abstract两个关键字可以省略)
}

  3.默认方法

    1.备注:接口当中的默认方法可以解决接口升级的问题

    2.接口的默认方法可以通过接口实现类对象进行直接调用

    3.接口的默认方法可以被接口的实现类进行覆盖重写

 package demopra.Interface;
/*
格式:
public default 返回值类型 方法名称(参数列表){
方法体
}
*/
//定义一个接口
public interface InterfaceContent03 {
//接口包含的内容(默认方法)
public default void method03(){
System.out.println("这是一个默认方法");
}
}
 package demopra.Interface;

 public class InterfaceContentt03Test implements InterfaceContent03{
public static void main(String[] args) {
//创建实现类对象
InterfaceContentt03Test ic = new InterfaceContentt03Test();
//实现类对象直接调用接口的默认方法
ic.method03();
}
// //实现类覆盖重写接口的默认方法
// @Override
// public void method03() {
// System.out.println("实现类覆盖重写接口的默认方法");
// }
}

  4.静态方法

 package demopra.Interface;
/*
格式:
public static 返回值类型 方法名称(){
方法体
}
提示:就是将abstract或者default换成static 即可,记得带上方法体{}
注意事项:不能通过接口实现类对象来调用接口当中的静态方法,只能通过接口名称来调用
格式:
接口名称.静态方法(参数);
*/
//定义一个接口
public interface InterfaceContent04 {
//接口包含的内容(静态方法)
public static void method04(){
System.out.println("这是一个静态方法");
}
}
 package demopra.Interface;
//创建一个接口的实现类
public class InterfaceContentt04Test implements InterfaceContent04{
public static void main(String[] args) {
//创建一个实现类对象
InterfaceContentt04Test ic = new InterfaceContentt04Test();
//错误写法,会报错
// ic.method04(); //正确调用方法
InterfaceContent04.method04();//执行结果:这是一个静态方法
}
}

  5.私有方法

 package demopra.Interface;
/*
为什么要用私有方法:
我们需要抽取一个共有方法,用来解决两个默认方法之间重复代码的问题。
但是这个共有方法不应该让实现类使用,应该是私有化的。
私有方法的两种用法:
普通私有方法:解决多个默认方法之间代码重复问题
格式:
private 返回值类型 方法名称(参数列表){
方法体
}
静态私有方法:解决多个静态方法之间代码重复问题
格式:
private static 返回值类型 方法名称(){
方法体
}
*/
//定义一个接口
public interface InterfaceContent05 {
//接口包含的内容(私有方法)
public static void method0501(){
System.out.println("这是一个普通私有方法1");
method05();
} public static void method0502(){
System.out.println("这是一个普通私有方法2");
method05();
}
//定义一个普通私有方法
private static void method05(){
System.out.println("AAAA");
System.out.println("BBBB");
}
//静态私有方法同理
}
 package demopra.Interface;

 public class InterfaceContentt05Test {
public static void main(String[] args) {
//直接通过接口名调用
InterfaceContent05.method0501();
InterfaceContent05.method0502();
//错误的写法,private不能直接调用
// InterfaceContent05.method05();
}
//静态私有方法同理 /*
结果:
这是一个普通私有方法1
AAAA
BBBB
这是一个普通私有方法2
AAAA
BBBB
*/
}

接口的使用步骤

  1.接口不能直接使用,逆序有一个"实现类了"来"实现"该接口

    格式:

      public class 实现类名称 implements 接口名称{

        实现类内容

      }

  2.接口的实现必须覆盖实现接口中所有的抽象方法

    实现:去掉abstract关键字,加上方法体大括号

  3.创建实现类对象,进行使用

  备注:如果实现类并没有覆盖重写接口中所有的实现方法,那么这个实现类自己必须是抽象类

继承父类并实现多个接口

  使用接口的时候,需要注意:
    1.接口是没有静态代码块或者构造方法的。
    2.一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。
      格式,
        public class MyInterfaceImpl impl ements MyInterfaceA, MyInterfaceB {
          //覆盖重写所有抽象方法
        }
    3.如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可。
    4.如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。
    5.如果实现类锁实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写。
    6.一个类如果直接父类当中的方法,和接口当中的默认方法产生了冲突,优先用父类当中的方法。

接口之间的多继承

  1.类与类之间是单继承的.直接父类只有一个。
  2.类与接口之间是多实现的。一个类可以实现多个按口。
  3.接口与接口之间是多继承的。
    注意事项
      1多个父接口当中的抽象方法如果重复,没关系。
      2.多个父接口当中的默认方法如果重复,那么子接口必须进行默认方法的覆盖重写, [而且带着default关键字]

Java之路---Day11(接口)的更多相关文章

  1. Java之路——名词解释(一)

    一.开篇 许多人在初接触Java的时候,都会被各种Java的英文缩写名词给弄得头晕脑胀.看一个技术,内容里又会有一堆其他的技术名词,看了半天不知所云.尝试去查一下这些名词的解释,除了非常学术性的解释之 ...

  2. Java之路——敬JAVA初学者(作者:MoMo)

    作为一名大四的毕业生,大学三年过,有得有失.作为一个喜欢编程,喜欢JAVA的人,自学其实是一件美事,很有意思的事.要是能再找个女朋友一起学.嘿嘿,就不枉在大学走了一遭啊!    要离开学校了,还是想留 ...

  3. Java 中的集合接口——List、Set、Map

    Java 中的集合接口——List.Set.Map 什么叫集合:集合就是Java API所提供的一系列类的实例,可以用于动态存放多个对象.这跟我们学过的数组差不多,那为什么我们还要学集合,我们看看数组 ...

  4. 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案

    方案特点: 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案,简化软件开发流程,减少各应用系统相同模块的重复开发工作,提高系统稳定性和可靠性. 基于HTTP协议的开发接口 使用特点在网页 ...

  5. 【java】[转]标记接口和标记注解注解

    Java中的标记接口和标记注解 http://blog.sina.com.cn/s/blog_7fdce91f0101d93m.html

  6. JAVA:抽象类VS接口

    JAVA中抽象类和接口的区别比较,以及它们各自的用途. 1.JAVA抽象类: 抽象类除了不能实例化以外,跟普通类没有任何区别.在<JAVA编程思想>一书中,将抽象类定义为“包含抽象方法的类 ...

  7. 转:二十一、详细解析Java中抽象类和接口的区别

    转:二十一.详细解析Java中抽象类和接口的区别 http://blog.csdn.net/liujun13579/article/details/7737670 在Java语言中, abstract ...

  8. java.util.Map.Entry接口

    java.util.Map.Entry接口主要就是在遍历map的时候用到,给你个例子:package test;import java.util.*;import java.util.Map.Entr ...

  9. Java IO 四大附加接口、try-with-resource

    Java IO 四大附加接口.try-with-resource @author ixenos 四大附加接口 Closeable.Flushable.Readable.Appendable Close ...

随机推荐

  1. Guava Cache 参数配置说明

    系统中用到了了Guava Cache: private DriverInfoServiceImpl(DriverClientProxy driverClientProxy) { this.driver ...

  2. WINDOWS 命令行调用SAS代码 并指定输出路径 示例

    ECHO "设置SAS.EXE 路径" SET PATH=D:\Program Files\SASHome\SASFoundation\9.4\SAS.EXE echo " ...

  3. Win10登陆界面卡住,进去后无法打开网络相关的设置,谷歌浏览器无法上网

    今天Win10抽风,进入登录页面输入用户名和密码之后,大约过了10分钟才进入桌面.重启后仍然如此. 经过调查,问题主要出在网络相关模块上,网络无法正常初始化,导致登录一直卡在网络初始化上. 解决方法如 ...

  4. paddlepaddle如何预加载embedding向量

    使用小批量数据时,模型容易过拟合,所以需要对全量数据进行处理,我是用的是word2vec训练的词向量. 那么训练好对词向量如何加载呢? #!/usr/bin/env python # -*- codi ...

  5. C#-DllImport 路径问题

    原文:C# DllImport 相对路径无法找到dll DllImport DLL查找顺序:1.应用程序所在目录2.Windows目录和Windows\System32目录3.环境变量目录 只需要你把 ...

  6. Python3基础 __file__ 查询模块的完整路径

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  7. java多线程(六)线程控制类

    1.   多线程控制类 为了保证多线程的三个特性,Java引入了很多线程控制机制,下面介绍其中常用的几种: l  ThreadLocal l  原子类 l  Lock类 l  Volatile关键字 ...

  8. 搭建npm私服流程

    npm私服必要性 1. 如果公司处于隐私保护的需要,不想将自己封的包推到npm社区,但又急需要一套完整的包管理工具来管理越来越多的组件,模块,项目.对于前端,最熟悉的莫过于npm,bower等,但是b ...

  9. python初级(302) 6 对象(四)

    一.复习 1.什么是多态 2.复习上一节课内容 class Triangle: """ 三角形类 """ def __init__(self ...

  10. C++内存管理5-处理new分配内存失败情况(转)

    C++内存管理5-处理new分配内存失败情况(转) endl; 参考博客: https://www.cnblogs.com/findumars/p/9905195.html