首页 > 编程语言 >day14 java接口

day14 java接口

时间:2024-04-08 19:30:57浏览次数:28  
标签:java System 接口 day14 默认 println 方法 out

接口

接口:对不同类型不同事物相同功能的描述(一定程序上解决了单继承的局限性)

接口可以理解成一种标准 规范
    当类实现这个接口就实现了这个标准或规范

接口的格式:
    权限修饰符 interface 接口名{
    }

    权限修饰符只能是public和缺省的。

说明:
    1.类和接口是并列的结构。
    2.接口中有
        JDK1.8之前 :常量,抽象方法
        JDK1.8之后: 常量,抽象方法,静态方法,默认方法
    3.接口不能实例化,接口中没有构造器。
    4.接口和类的关系 :实现关系而且多实现
         类名 implements 接口名1,接口名2,.......
    5.当类实现接口后要实现接口中所有的抽象方法。如果不想实现该类可以声明为抽象类
    6.接口和实现类的多态性 :接口的类型指向实现类的对象
    7.接口和接口的关系 :继承关系并且是多继承
         类和类的关系:单继承
         类和接口的关系 :多实现
         接口和接口的关系 :多继承

接口和实现类的多态

接口和实现类也可以实现多态 : 接口的类型 指向 实现类的对象
interface MyInterface{
   
}

class Person implements MyInterface{
    
}

public class InterfaceTest {

    public static void main(String[] args) {
        MyInterface mi = new Person();
        if (mi instanceof Person){
            System.out.println("我是person");
        }
    }  
}

可以用 对象 instanceof 类或者接口 判断能否向下转型

右边为对象所属类的 父类 或者 所接接口 或者 所接接口的父接口 为ture

interface A{

}
interface B extends A {

}

interface C extends B{

}

class SubClass implements C{

}
public class InterfaceTest {
    public static void main(String[] args) {
        SubClass sb = new SubClass();

        System.out.println(sb instanceof C);
        System.out.println(sb instanceof B);
        System.out.println(sb instanceof A);
    }
}

结果为:ture

              ture

              ture

接口新特性

JDK1.8开始 接口中增加了静态方法和默认方法

说明:
    1.接口中的静态方法的调用 : 接口名.静态方法名
    2.接口中的默认方法的调用 :  实现类的对象.默认方法名
    3.类优先原则 :当父类和接口中的默认方法出现了同名同参的那么默认调用父类中的该方法。
    4.接口冲突 : 当实现的多个接口中出了同名同参的默认方法时那么实现类必须重写此方法。
    5.在实现类的重写方法中调用接口中被重写的方法 : 接口名.super.默认方法名

 JDK1.9开始 :接口中增加私有方法(方法被private修饰)--知道即可

 注意:
    在类中重写接口中的默认方法不要加default
interface A{
    static void run(){
        System.out.println("A arun");
    }

    default void test(){
        System.out.println("A test");
    }
}

interface B{
    static void run(){
        System.out.println("B arun");
    }

    default void test(){
        System.out.println("B test");
    }
}

class SubClass implements A,B{

    /*
        当实现的多个接口中出了同名同参的默认方法时那么实现类必须重写此方法。
     */
    @Override
    public void test() { //重写接口中的默认方法时不要加default
        //调用接口中被重写的方法 : 接口名.super.默认方法名
        A.super.test();
        B.super.test();
        System.out.println("subClass test");
    }
}

标签:java,System,接口,day14,默认,println,方法,out
From: https://blog.csdn.net/oldzhongyi/article/details/137518999

相关文章

  • Java面向对象01——类与对象
    大家好,我是白夜,今天和大家聊聊类与对象一、初识面向对象(了解)1.1、面向过程和面向对象面向过程编程C语言就是面向过程编程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。面向对象编程JAVA是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象......
  • 【javaWeb &第十二篇】MybatisPlus
    MybatisPlus详细学习快速入门MybatisPlus特性标准数据层开发分页查询按条件查询查询投影DQL编程控制DML编程控制逻辑删除乐观锁代码生成器快速入门MybatisPlus是基于Mybatis框架基础上开发的增强型工具,旨在简化开发,提高效率官方地址:http://mp.baomidou.com/开......
  • Java 实例 – 如何编译 Java 文件||Java 实例 – 如何执行编译过 Java 文件
    Java实例–如何编译Java文件本文我们演示如何编译HelloWorld.java文件,其中Java代码如下:publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("HelloWorld");}}接下来我们使用javac命令来编译Java文件,并......
  • Java登陆第四十一天——Promise、async关键字、await关键字
    在学习axios之前,需要学习ES6提供的Promise对象。普通函数和回调函数学习Promise的预备知识,回调函数普通函数普通函数:正常调用的函数,普通函数执行完毕后才会继续执行下一行代码。按照编码顺序执行。functionf1(){console.log("普通函数f1执行");}functionf2(......
  • Packet Tracer - 配置单臂路由器 VLAN 间,路由为交换机添加 V配置子接口,测试使用 VLA
    配置指令是下面以下均要进入特权模式enable以及全局模式configterminalS1S1(config)#vlan10S1(config-vlan)#vlan30S1(config-vlan)#exitS1(config)#intf0/11S1(config-if)#switchportmodeaccessS1(config-if)#switchportaccessvlan10S1(config-if)#int......
  • 常用Java代码混淆工具介绍及比较
     ......
  • java中的基准测试框架JMH
    JHM是openJDK开发的一个benchmark框架。它是一个Maven依赖,所以创建一个Maven项目,引入下面两个依赖:<dependency><groupId>org.openjdk.jmh</groupId><artifactId>jmh-core</artifactId><version>1.37</version></dependency&g......
  • Java实现Fast DFS、服务器、OSS上传
    支持FastDFS、服务器、OSS等上传方式介绍在实际的业务中,可以根据客户的需求设置不同的文件上传需求,支持普通服务器上传+分布式上传(FastDFS)+云服务上传OSS(OSS)软件架构为了方便演示使用,本项目使用的是前后端不分离的架构前端:Jquery.uploadFile后端:SpringBoot前期准备:F......
  • 实战解析:接口限流的一次简单实践
    1.写这篇文章的来由有一段时间里,博客总是三天两头被打,其中就遇到了恶意刷接口的手段,对方明显使用的代码IP,由于博客并没有做这方面的措施,加上被大量盗刷的接口刚好是数据量最大的一篇文章数据,所以不出意外的,博客没多久就崩了。服务器状态也是各种异常。所以吃一堑长一智吧算......
  • Vue2中使用iframe展示文件流(PDF)以及blob类型接口错误展示返回值
    需求使用iframe展示后端接口传输来的文件流(pdf),如果接口返回错误则弹出提示html部分<iframe:src="url"width="100%"/>接口部分//接口封装已忽略,注意:如需接口接收文件流,请在请求中加入responseType:'blob'以及type:"application/json;chartset=UTF-8"function......