JAVA_接口_默认方法&静态方法
1.小结(注意):
1.接口中无法定义成员变量,但是可以定义常量,其值不可以改变,默认使用public static final修饰
2.接口中,没有构造方法,不能创建对象
3.接口中,没有静态代码块
4.可以继承,可以重写,二选一,但是只能通过实现类的对象来调用
5.接口可以多实现
6.默认方法和静态方法JDK8版本才出的.
7.接口中抽象方法使用abstract关键字修饰,可以省略,没有方法体,该方法供子类实现使用.
8.静态与.class文件相关,只能使用接口名调用,不可以通过实现类的类名或者实现类的对象调用
9. 一个接口能继承另外一个或者多个接口,这和类之间的继承比较相似,接口的继承使用extends关键字,子接口继承父接口的方法.如果父接口中的默认方法有重名的,那么子接口需要重写一次
2.接口
接口,是java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量,构造方法,成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK7以前),默认方法和静态方法(JDK8).
接口的定义,它与定义类方式相似,但是使用interface关键字.它也会被编译成.class文件,但一定要明确它不是类,而是另外一种数据类型.
引用数据类型:数组,类,接口
接口的使用,他不能创建对象,但是可以被实现(implements,类似于被继承),一个实现接口的类,(可以看做是接口的子类),需要实现接口中所有的抽象方法,创建该类对象,就可以调用方法了,否则它必须是一个抽象类
定义格式:
public interface Inter {
//抽象方法,默认省略public abstract
public abstract void method1();
//默认方法
public default void method2(){
//方法体
}
//静态方法
public static void method3(){
//方法体
}
}
接口可以多实现
3.抽象方法
抽象方法使用abstract关键字修饰,可以省略,没有方法体,该方法供子类实现使用.
4.默认方法
使用default修饰,不可省略,供子类调用或者子类重写
可以继承,可以重写,二选一,但是只能通过实现类的对象来调用
接口中,有多个默认方法时,实现类都可继承使用,如果继承方法有重名的,必须重写一次
5.静态方法
使用static修饰,供接口直接调用
静态与.class文件相关,只能使用接口名调用,不可以通过实现类的类名或者实现类的对象调用
6.实现:
类与接口的关系为实现关系,即类实现接口,该类可以成为接口的实现类,也可以成为接口的子类,实现的动作类似继承,格式相仿,只是关键字不同,实现使用implements关键字
非抽象子类实现接口:
- 必须重写接口中的所有的抽象方法,
- 继承了接口的默认方法,即可以直接调用,也可以重写
接口中,存在同名的静态方法并不会冲突,原因是只能通过各自接口名访问静态方法
7.优先级问题:
当一个类,既继承了一个父类,又实现多个接口,父类中的成员方法与接口中的默认方法重名,子类就近选择执行父类的成员方法
8.接口的多继承:
一个接口能继承另外一个或者多个接口,这和类之间的继承比较相似,接口的继承使用extends关键字,子接口继承父接口的方法.如果父接口中的默认方法有重名的,那么子接口需要重写一次
9.其他:
1.接口中无法定义成员变量,但是可以定义常量,其值不可以改变,默认使用public static final修饰
2.接口中,没有构造方法,不能创建对象
3.接口中,没有静态代码块
JAVA_接口_默认方法&静态方法的更多相关文章
- 常用的函数式接口_Prodicate接口_默认方法or&negate和常用的函数式接口_Predicate接口练习_集合信息筛选
常用的函数式接口_Prodicate接口_默认方法or&negate OR package com.yang.Test.PredicateStudy; import java.util.fun ...
- 常用的函数式接口_Predicate接口_默认方法and和Predicate接口练习_集合接口筛选
默认方法:and 既然是条件判断,就会存在与.或.非三种常见的逻辑关系.其中将两个Preadicate条件使用"与"逻辑连接起来实现"并且"的效果时,可以使用d ...
- jdk8系列一、jdk8 Lamda表达式语法、接口的默认方法和静态方法、supplier用法
一.简介 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和JVM等方面的十多个新特性. 在本文中我们将学习这些新特性,并用实际 ...
- java8新特性:接口的默认方法与静态方法
接口中一共可以定义三种方法: 1.抽象方法,也就是需要实现者必须实现的方法,最常见的那种 2.默认方法,不需要实现者实现 3.静态方法,不需要实现者实现 默认方法: 允许在已有的接口中添加新方法,而同 ...
- java1.8新特性(一)接口的默认方法
一 简介 我们通常所说的接口的作用是用于定义一套标准.约束.规范等,接口中的方法只声明方法的签名,不提供相应的方法体,方法体由对应的实现类去实现. 在JDK1.8中打破了这样的认识,接口中的方法可以有 ...
- JDK1.8新特性(一): 接口的默认方法default
前言 今天在学习mysql分区优化时,发现一个博客专家大神,对其发布的文章简单学习一下: 一:简介 我们通常所说的接口的作用是用于定义一套标准.约束.规范等,接口中的方法只声明方法的签名,不提供相应的 ...
- Java8新特性——接口的默认方法和类方法
Java8新增了接口的默认方法和类方法: 以前,接口里的方法要求全部是抽象方法,java8以后允许在接口里定义默认方法和类方法: 不同的是: 默认方法可以通过实现接口的类实例化的对象来调用,而类方法只 ...
- “全栈2019”Java第六十五章:接口与默认方法详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 一文带你认识Java8中接口的默认方法
Java8是Oracle于2014年3月发布的一个重要版本,其API在现存的接口上引入了非常多的新方法. 例如,Java8的List接口新增了sort方法.在Java8之前,则每个实现了List接口的 ...
随机推荐
- win10常用快捷键
记住Win10一些常用的快捷键,在使用电脑的过程中,可以快速的切换不同的功能窗口,减少鼠标的操作.大大提高工作效率.来看看下面这些常用的. Win键+Tab:激活任务视图 Win键+A:激活操作中心 ...
- python语法_函数
---恢复内容开始--- 函数: 1 减少重复代码 2 定义一个功能,需要直接调用 3 保持代码一致性 def funcation_name(参数s): 功能代码块0 参数可以为多个,传入时按照前后 ...
- 通用类 对象Excel互转
public class ExcelHelper { public void Demo(string filePath) { if (File.Exists(filePath)) File.Delet ...
- 关于使用freemarker导出文档的使用
7.FreeMarker导出word文件,模板:template.ftl/** * 为word加载数据插值 * * @throws IOException */ public void exportW ...
- Mesos源码分析(3): Mesos Master的启动之二
2. process::firewall::install(move(rules));如果有参数--firewall_rules则会添加规则 对应的代码如下: // Initialize fire ...
- 选择 25k 的 996 还是 18k 的 965
阅读本文大概需要 3.7 分钟. 文中部分内容来源:http://h5ip.cn/hSDk 最近的 996.ICU 话题持续在火爆,一般热点新闻的热度持续时间为一星期,这次是程序们的集体发声导致,戳中 ...
- vue父子组件及非父子组件通信
1.父组件传递数据给子组件 父组件数据如何传递给子组件呢?可以通过props属性来实现 父组件: <parent> <child :child-msg="msg" ...
- [Swift]LeetCode807. 保持城市天际线 | Max Increase to Keep City Skyline
In a 2 dimensional array grid, each value grid[i][j]represents the height of a building located ther ...
- [Swift]LeetCode1031. 两个非重叠子数组的最大和 | Maximum Sum of Two Non-Overlapping Subarrays
Given an array A of non-negative integers, return the maximum sum of elements in two non-overlapping ...
- Markdown语法简介
1.标题 在想要设置为标题的文字前面加#来表示一个#代表一级标题,总共六级 2.字体 加粗要加粗的文字左右分别用两个*号包起来 斜体要倾斜的文字左右分别用一个*号包起来 斜体加粗要倾斜和加粗的文字左右 ...