开发面试题 web开发 微服务 Spring Cloud jsp reactjs concurrency interface air 后台界面模板 angularjs教程 photoshop cs3 教程 hadoop特点 matlab对数函数 spring源码下载 docker启动容器 python写文件 如何配置python环境 python数字类型 java获取年份 java平台 java中continue java的输入 java集合框架图 易语言进度条 骁龙435 微信签名一句话至自己 笔记本外接显示器好吗 3389扫描器 netreflector vue路由跳转 机械键盘个别键位失灵 ipad上市时间 文件分割 掘地鼠炖肉 英特尔显卡驱动官方 主播音效 日文游戏乱码转换工具 python编译 java大数据语言
当前位置: 首页 > 学习教程  > 编程语言

java学习笔记17(接口的概述)

2020/10/8 19:17:46 文章标签:

接口的概述 接口就是一种公共的规范标准 只要符合规范标准,就可以通用 接口定义的基本格式 接口就是多个类的公共规范 接口是一个引用数据类型,最重要的内容就是其中的抽象方法 定义一个接口的格式: public interface 接口名称 {//接口内…

接口的概述

接口就是一种公共的规范标准
只要符合规范标准,就可以通用

接口定义的基本格式

接口就是多个类的公共规范
接口是一个引用数据类型,最重要的内容就是其中的抽象方法
定义一个接口的格式:

public interface 接口名称
{
   //接口内容
}

备注:换成关键字interface之后,编译生成的字节码文件仍然是,.java–>.class
java7接口包含内容:常量,抽象方法
java8可以额外包括:默认方法静态方法
java9还可以包含:私有方法

接口使用步骤:
1 接口不能直接使用,必须要有一个“实现类”来“实现”该接口
public class 实际类名称 implements 接口名称
{
}
2接口的实现类必须覆盖重写(实现)接口中所有抽象方法
实现:去掉abstract关键字,加上方法体大括号
3 创建实现类的对象,进行使用

抽象方法

//格式:public abstract 返回值类型 方法名称(参数列表);
//注意事项:
//1 接口当中的抽象方法,修饰符必须是两个固定的关键字:public abstract
//2 这两个关键字修饰符,可以选择性省略
//接口
public interface MyInterfaceAbstract
{
   public abstract void methodAbs();
   //public void methodAbs1();
  // abstract void methodAbs2();
   //void methodAbs3();
}

//抽象类的实现对象
public class MyInterfaceAbstractImp1 implements MyInterfaceAbstract
{
    @Override
    public void methodAbs()
    {
       System.out.println("抽象方法")}
}
//创建实现类的对象
public class Demo
{
    public static void main(String[] args)
    {
       MyInterfaceAbstractImp1 imp1=new  MyInterfaceAbstractImp1();
       imp1.methodAbs();

    }
}

默认方法

//方法定义
/*
  从java 8开始,接口里允许定义默认方法
  格式:
  public default 返回值类型 方法名称(参数列表){
      方法体
  }
  备注:接口当中的默认方法,可以解决接口升级的问题
  */
public interface MyInterfaceDefault
{
   public abstract void methodAbs();
   public default void methodDefault()
   {
      System.out.println("默认方法");
   }
}
实现类a
public class MyInterfaceDefaultA implements MyInterfaceDefault
{
    @Override
    public void methodAbs()
    {
       System.out.println("抽象方法a")}
}
实现类b
public class MyInterfaceDefaultB implements MyInterfaceDefault
{
    @Override
    public void methodAbs()
    {
       System.out.println("抽象方法b")}
     public default void methodDefault()
   {
      System.out.println("默认方法b");
   }
}

}
//1 接口的默认方法,可以通过接口实现类对象,直接调用
//2 接口的默认方法,也可以被接口实现类覆盖重写
public class Demo2
{
   public static void main(String[] args)
   {
       MyInterfaceDefaultA a=new MyInterfaceDefaultA();
       a.methodAbs();//实际上在调用右侧实现类
       a.methodDefault();//调用默认方法,如果实现类中没有,那么向上找接口
       MyInterfaceDefaultB b=new MyInterfaceDefaultB();
       b.methodDefault();
   }
}

静态方法

/*
  格式:public static 返回值类型 方法名称(参数列表)
  {
      方法体
  }
*/
public class MyInterfaceStatic
{
   public static void methodStatic()
   {
      System.out.println("这是一个静态方法");
   }
}
public class MyInterfaceSaticImp1 implements MyInterfaceStatic
{
}
/*
   注意:不能通过接口实现类来调用接口当中的静态方法
   格式 接口名称.静态方法名(参数);
*/
public class demo
{
   public static void main(String[] args)
   {
       MyInterfaceStatic.methodStatic();
   }
}

私有方法

/*
  定义私有方法;
  1 普通私有方法:解决多个默认方法之间重复代码问题
  格式:private 返回值类型 方法名称(参数列表)
  {
     方法体;
  }
  2 静态私有方法:解决多个静态方法之间重复代码问题
  格式:private static 返回值类型 方法名称(参数列表)
  {
      方法体;
  }
*/
public interface MyInterfacePrivateA
{
   public default void methodDefault1()
   {
      System.out.println("默认方法1");
      
   }
   public default void methodDefault2()
   {
      System.out.println("默认方法2");
   }
   private void methodCommmon()
   {
      System.out.println("aaa");
   }
}
public class MyInterfacePrivateAImp1 implements MyInterfacePrivateA
{
}

接口中常量的定义和使用

/*
 接口当中也可以定义“成员变量”,但必须使用public static final三个关键字进行修饰。
 从效果上看,这其实就是接口的常量
 格式 public static final 数据类型 常量名称=数据值;
 final修饰不可改变
 注意:接口中变量必须赋值
*/
public interface MyInterfaceConst
{
 public static final int num=10;
 //一旦赋值,不可修改
}

接口总结

1 成员变量其实是常量,格式:
[public] [static] [final] 常量名称=数据值;
注意:
常量必须赋值,一旦赋值不可改变
常量名称大写,用下划线分割
2 抽象方法
[public][abstract] 返回值类型 方法名称(参数列表);
注意:实现类要重写抽象方法
3 默认方法
public default 返回值类型 方法名称(参数列表)
{方法体}
注意 默认方法可以被覆盖重写
4 静态方法
【public】static 返回值类型 方法名称(参数列表) {方法体}
注意 应该通过接口名称进行调用
5 私有方法
private 返回值类型 方法名称(参数列表) {方法体}
private static 返回值类型 方法名称(参数列表) {方法体}
只有接口自己调用

继承父类并实现多个接口

接口不能有静态代码快和构造方法
一个类可以实现多个接口
多个接口中覆盖抽象方法重复,只用复写一个
如果没有实现所有抽象方法,那么实现类一定是抽象类
如果接口中默认方法冲突,那么一定要重写冲突方法
一个类如果直接父类当中的方法,和接口中的默认方法产生了冲突,优先使用父类当中的方法

接口中的多继承

1 类与类之间是单继承的,直接父类只有一个
2 类与接口之间是多实现的,一个类可以实现多个接口
3 接口和接口之间是多继承的

一个接口能继承另一个或者多个接口,这和类之间的继承比较相似。
接口的继承使用 extends 关键字,子接口继承父接口的方法。
如果父接口中的默认方法有重名的,那么子接口需要重写一次。(带着default关键字)


本文链接: http://www.dtmao.cc/news_show_250134.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?