java基础之接口组成更新的实现

目录
  • 1.1 接口组成更新概述
  • 1.2 接口中默认方法(JDK8)
  • 1.3 接口中静态方法(JDK8)
  • 1.4 接口中私有方法(JDK9)

1.1 接口组成更新概述

  • 接口的组成

    • 常量:public static final
    • 抽象方法:public abstract
    • 默认方法(Java 8)
    • 静态方法(Java 8)
    • 私有方法(Java 9)

1.2 接口中默认方法(JDK8)

我们都知道,一个类实现一个接口,就要重写这个接口中的所有抽象方法。但现在接口中新增了一个方法,实现这个接口的类不想重写这个方法怎么办?这时就可以使用接口中默认方法,它不强制被重写,而且还可以提供方法体。

  • 接口中默认方法的定义格式:

    • 格式:public default 返回值类型 方法名(参数列表){}
    • 范例:public default void show(){}
  • 接口中默认方法的注意事项:
    • 默认方法不是抽象方法,所以不强制被重写。但是可以被重写,重写的时候去掉default关键字
    • public可以省略,default不能省略:default void show(){}

1.3 接口中静态方法(JDK8)

  • 接口中静态方法的定义格式:

    • 格式:public static 返回值类型 方法名(参数列表){}
    • 范例:public static void show(){}
  • 接口中静态方法的注意事项:
    • 静态方法只能通过接口名调用, 不能通过实现类名或者对象名调用
    • public可以省略, static不能省略:static void show(){}
  • 接口
package test;

public interface Inter {
    void show();

    default void method() {
        System.out.println("默认方法");
    }

//    public static void test(){
//        System.out.println("静态方法");
//    }

    static void test(){
        System.out.println("静态方法");
    }
}
  • 实现类
package test;

public class InterImpl implements Inter{
    @Override
    public void show() {
        System.out.println("show方法");
    }
}
  • 测试类
package test;

public class Demo {
    public static void main(String[] args) {
        Inter i = new InterImpl();
        i.show(); //show方法
        i.method(); //
//        i.test(); //报错

        Inter.test(); //静态方法,接口名调用静态方法
    }
}

1.4 接口中私有方法(JDK9)

Java 9 中新增了带方法体的私有方法,这其实在 Java 8 中就埋下了伏笔:Java 8 允许在接口中定义带方法体的默认方法和静态方法。这样可能就会引发一个问题:当两个默认方法或者静态方法中包含一段相同的代码实现时,程序必然考虑将这段实现代码抽取成一个共性方法,而这个共性方法是不需要让别人使用的,因此用私有给隐藏起来,这就是 Java 9 增加私有方法的必然性 。

  • 接口中私有方法的定义格式

    • 格式1(非静态)private 返回值类型 方法名(参数列表){}
    • 范例1:private void show() {}
    • 格式2(静态)private static 返回值类型 方法名(参数列表){}
    • 范例2:private static void method() {}
  • 接口中私有方法的注意事项
    • 默认方法可以调用私有的静态方法和非静态方法
    • 静态方法只能调用私有的静态方法
package test;

public interface Inter {
    default void show1() {
        System.out.println("show1开始执行");
//        System.out.println("初级工程师");
//        System.out.println("中级工程师");
//        System.out.println("高级工程师");
//        show();
        method();
        System.out.println("show1结束");
    }

    static void method1() {
        System.out.println("method1开始执行");
//        System.out.println("初级工程师");
//        System.out.println("中级工程师");
//        System.out.println("高级工程师");
        method();
        System.out.println("method1结束");
    }

    private void show(){
        System.out.println("初级工程师");
        System.out.println("中级工程师");
        System.out.println("高级工程师");
    }

    private static void method(){
        System.out.println("初级工程师");
        System.out.println("中级工程师");
        System.out.println("高级工程师");
    }
}

到此这篇关于java基础之接口组成更新的实现的文章就介绍到这了,更多相关java 接口组成更新内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解java集成支付宝支付接口(JSP+支付宝20160912)

    吐槽一下: 支付宝的接口和微信的DEMO和文档真心太难看懂了,乱七八糟,都不知道去哪里找自己要的东西,最近几天我们公司需要做类似的开发,我作为先锋,率先解决Java集成支付宝支付和微信支付接口工作. 我们的工作环境:JSP网站+支付接口,目前工作的支付宝接口为20160912,微信为V3版本,如遇到版本升级,请联系相关机构的客户服务人员升级. 本文介绍JSP+支付宝接口,本文非原创. 新手注意: 1.本文使用的接口地址和参数为沙箱的地址,无论你在使用沙箱或者正式地址,务必核实使用接口地址和参数,

  • java后台调用HttpURLConnection类模拟浏览器请求实例(可用于接口调用)

    一般在项目开发中难免遇到外部接口的调用,本文实例讲述了java后台调用HttpURLConnection类模拟浏览器请求的方法.可用于接口调用.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package com.cplatform.movie.back.test; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import ja

  • Java接口和抽象类用法实例总结

    本文实例讲述了Java接口和抽象类用法.分享给大家供大家参考,具体如下: 接口 1 因为java不支持多重继承,所以有了接口,一个类只能继承一个父类,但可以实现多个接口,接口本身也可以继承多个接口. 2 接口里面的成员变量默认都是public static final类型的.必须被显示的初始化. 3 接口里面的方法默认都是public abstract类型的.隐式声明. 4 接口没有构造方法,不能被实例化. 5 接口不能实现另一个接口,但可以继承多个接口. 6 类如果实现了一个接口,那么必须实现

  • Java获取接口所有实现类的方式详解

    有时候,根据业务逻辑的需求,我们想要获取到某个接口的所有实现类.在这里大致介绍两种方式: 1.借助Spring容器实现 Spring作为一个容器,管理着一个项目中所有经过配置的Java类(xml配置文件或Annotation方式).如果某个接口的所有实现类均被Spring托管了,那么通过Spring就可以很简单的返回这些实现类. import org.springframework.beans.BeansException; import org.springframework.context.

  • java线程之使用Runnable接口创建线程的方法

    实现Runnable接口的类必须使用Thread类的实例才能创建线程.通过Runnable接口创建线程分为两步: 1. 将实现Runnable接口的类实例化. 2. 建立一个Thread对象,并将第一步实例化后的对象作为参数传入Thread类的构造方法. 最后通过Thread类的start方法建立线程. 下面的代码演示了如何使用Runnable接口来创建线程: 复制代码 代码如下: package mythread; public class MyRunnable implements Runn

  • Java调用WebService接口的方法

    本文实例讲述了Java调用WebService接口的方法.分享给大家供大家参考.具体如下: 这里讲述有参方法Add,代码如下: 复制代码 代码如下: public static void addTest() {         try ...{             Integer i = 1;             Integer j = 2;                         //WebService URL             String service_url =

  • JAVA发送http get/post请求,调用http接口、方法详解

    三个例子 -JAVA发送http get/post请求,调用http接口.方法 例1:使用 HttpClient (commons-httpclient-3.0.jar jar下载地址:http://xiazai.jb51.net/201904/yuanma/commons-httpclient-3.0.rar import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOE

  • Java调用CXF WebService接口的两种方式实例

    通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 1.静态调用 // 创建WebService客户端代理工厂 JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); // 判断是否抛出异常 factory.getOutInterceptors().add(new LoggingInInterceptor()); // 注册webservic

  • java中set接口使用方法详解

    java中的set接口有如下的特点: 不允许出现重复元素: 集合中的元素位置无顺序: 有且只有一个值为null的元素. 因为java中的set接口模仿了数学上的set抽象,所以,对应的数学上set的特性为: 互异性:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次. 无序性:一个集合中,每个元素的地位都是相同的,元素之间是无序的.集合上可以定义序关系,定义了序关系后,元素之间就可以按照序关系排序.但就集合本身的特性而言,元素之间没有必然的序. 空集的性质:空集是一切集合的子集 S

  • java基础之接口组成更新的实现

    目录 1.1 接口组成更新概述 1.2 接口中默认方法(JDK8) 1.3 接口中静态方法(JDK8) 1.4 接口中私有方法(JDK9) 1.1 接口组成更新概述 接口的组成 常量:public static final 抽象方法:public abstract 默认方法(Java 8) 静态方法(Java 8) 私有方法(Java 9) 1.2 接口中默认方法(JDK8) 我们都知道,一个类实现一个接口,就要重写这个接口中的所有抽象方法.但现在接口中新增了一个方法,实现这个接口的类不想重写这

  • 一篇文章带你了解Java基础-接口

    目录 Java基础知识(接口) 接口 接口的定义 接口和抽象的区别 接口的格式 接口中的主要成分 接口的案例 接口与接口的关系 JDK 8之后的接口新增方法 总结 Java基础知识(接口) 接口 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 接口的定义 接口: 在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口

  • Java基础篇_有关接口和抽象类的几道练习题(分享)

    呃,一定要理解之后自己敲!!!这几道题,使我进一步了解了接口和抽象类. 1.设计一个商品类 字段: 商品名称,重量,价格,配件数量,配件制造厂商(是数组,因为可能有多个制造厂商) 要求: 有构造函数 重写 toString 方法 重写 equals方法,进行两件商品的比较 package TT; import java.util.Arrays; public class G { private int 重量; private String 商品名称; private int 价格; privat

  • Java基础第五篇 实施接口

    目录 1.interface 2.分离接口的意义 3.实施多个接口 4.总结 在上一篇文章封装与接口中,private关键字封装了对象的内部成员.经过封装,产品隐藏了内部细节,只提供给用户接口(interface). 接口是非常有用的概念,可以辅助我们的抽象思考.在现实生活中,当我们想起某个用具的时候,往往想到的是该用具的功能性接口.比如杯子,我们想到加水和喝水的可能性,高于想到杯子的材质和价格.也就是说,一定程度上,用具的接口等同于用具本身.内部细节则在思考过程中被摒弃. 在public和pr

  • Java基础第四篇 封装与接口

    目录 1.封装与接口 2.对象成员的封装 3.类的封装 4.总结 前言: 总结之前的内容,对象(object)指代某一事物,类(class)指代象的类型.对象可以有状态和动作,即数据成员和方法. 到现在为止,数据成员和方法都是同时开放给内部和外部的.在对象内部,我们利用this来调用对象的数据成员和方法.在对象外部,比如当我们在另一个类中调用对象的时,可以使用 对象.数据成员 和 对象.方法() 来调用对象的数据成员和方法. 1.封装与接口 封装(encapsulation)是计算机常见的术语,

  • Java基础巩固抽象类与接口详解

    目录 1.抽象类 1.1.什么是抽象类 1.2.抽象类的用法 1.3.抽象类特点(限制条件) 2.接口 2.1.什么是接口 2.2.接口的用法 2.3.如何使用接口 2.4.接口的特点(限制条件) 2.5.如何实现多个接口 2.6.接口于接口之间的继承关系 2.7.如何使用接口 抽象类与接口 1.抽象类 1.1.什么是抽象类 如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类 1.2.抽象类的用法 一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract

  • Java基础学习之接口详解

    目录 概述 定义格式 含有抽象方法 含有默认方法和静态方法 含有私有方法和私有静态方法 基本的实现 实现的概述 抽象方法的使用 默认方法的使用 静态方法的使用 私有方法的使用 接口的多实现 抽象方法 默认方法 静态方法 优先级的问题 接口的多继承 其他成员特点 概述 接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量.构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法 (JDK 9). 接

  • 详解Java基础知识——JDBC

    JDBC Java DataBase Connectivity,java数据库连接,为了降低操作数据的难度,java提供jdbc,按照java面向对象特点,对操作进行了很多封装. JDBC提供了很多接口,然后不同数据库厂商去实现这个接口,到底底层如何去实现,不同的数据库不一样,不同的数据库厂商需要提供接口实现类(驱动类.驱动程序 Driver.驱动) 我们连接不同的数据库,我们只需要使用不同的驱动即可. J:Java:提供访问数据库的规范(接口), DBC:接口的实现,厂商去实现这个接口. JD

  • Java基础之面向对象机制(多态、继承)底层实现

    一.Java的前世 为什么会产生Java?Java的特点是什么? 从C语言开始讲,C语言是一种结构化语言,模块化编程,便于程序的调试,依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建,通过指针类型更可对内存直接寻址以及对硬件进行直接操作,因此既能够用于开发系统程序,也可用于开发应用软件.其缺点就是封装性弱,程序的安全性上不是很好.C语言的异常处理一般使用setjmp()与longjmp(),在捕获到异常时进行跳转:或者使用abort()和exit()两个函数,强行终止程序的运

  • 新手了解java基础知识(一)

    目录 1.java基础 1.1Java历史 1.2Java特点 1.2.1 简单性 1.2.2 面向对象 1.2.3 分布式(微服务) 1.2.4 健壮性 1.2.5 安全性 1.2.6 体系结构中立 1.2.7 可移植性 1.2.8 高性能 1.2.9多线程 1.2.10 动态性 1.3Java基本数据类型 byte: short: int: long: float: double: boolean: char: 1.4例子 1.5基本数据类型的包装类 1.6强制类型转换 1.7隐含强制类型转

随机推荐