一起学Java(四十七)----- 接口定义增强
时间:2020-05-22
本文章向大家介绍一起学Java(四十七)----- 接口定义增强,主要包括一起学Java(四十七)----- 接口定义增强使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
不积跬步,无以至千里;不积小流,无以成江海。
Java语言基础
Java的接口定义增强
在JDK1.8之前,接口有如下特性:
1、接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
2、接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。
3、接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
JDK1.8,增强接口定义:
允许在接口中定义普通方法,用default或static关键字修饰。
用default关键字定义方法
在接口中使用default关键字定义方法,需要添加方法体,default见名思意就是说,为这个方法提供一个默认写好的方法体实现。当然,在子接口中也可以继续去覆写它。
interface A{
String NAME = "tutu"; // 全局常量
void print(); // 抽象方法
default void dprint() {
System.out.println("接口A中default定义的方法体");
}
}
class X implements A{
@Override
public void print() {
// TODO Auto-generated method stub
System.out.println("接口A中的抽象方法");
}
@Override
public void dprint() {
System.out.println("覆写接口A中default定义的方法体");
}
}
public class TestDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
A a = new X();
a.dprint();
a.print();
}
}
程序输出:
覆写接口A中default定义的方法体
接口A中的抽象方法
用Static关键字定义方法
使用static关键字修饰的方法叫做静态方法,它不依赖于某个对象就可以访问。在接口中定义static方法也是如此,可以通过接口名直接调用。
interface A{
String NAME = "tutu"; // 全局常量
void print(); // 抽象方法
static void sprint() {
System.out.println("接口A中static定义的方法体");
}
}
class X implements A{
@Override
public void print() {
// TODO Auto-generated method stub
System.out.println("接口A中的抽象方法");
}
}
public class TestDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
A.sprint();
}
}
程序输出:
接口A中static定义的方法体
博客借鉴:https://www.cnblogs.com/hyyq/p/7420534.html
原文地址:https://www.cnblogs.com/smilexuezi/p/12938598.html
- OData – the best way to REST–实例讲解ASP.NET WebAPI OData (V4) Service & Client
- Java实现的手工做乘法方法,给出二个字符串数字,返回相乘结果
- No.012 Integer to Roman
- 黑帽SEO剖析之手法篇
- IOS学习1——IOS应用程序的生命周期及基本架构
- 浅议“全局变量”、“多线程”和“编译器陷阱”
- Java实现的图片合并方法,支持水平和垂直合并
- OC学习15——文件I/O体系
- 用惯了ORM,居然不会写分页SQL了
- OC学习14——谓词
- 如何在32位系统中使用ROP+Return-to-dl来绕过ASLR+DEP
- 如何使用Twitter构建C;C服务器
- 【Python语言】Scikit-learn 快速入门
- 抽象SQL查询:SQL-MAP技术的使用
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 如何在kubernete集群上部署springboot应用
- lettuce连接池很香,撸撸它的源代码
- 浅谈kubernete中的flannel网络插件
- 聊聊Java中CompletableFuture的使用
- 开发更高可用、高质量的服务的一些建议
- kubernete编排技术一:pod
- Golang逃逸分析
- kubernete编排技术二:deployment
- Gearman介绍、原理分析、实践改进
- 『JWT』,你必须了解的认证登录方案
- 静态网站
- ansible超详细使用指南
- Linux下快速安装Python3和pip
- 面试官:谈一谈java中基于AQS的并发锁原理
- kubernete编排技术三:StatefulSet