Java之路---Day11(接口)
2019-10-25-23:22:23
目录
1.接口的概念
2.接口的定义格式
3.接口包含的内容
4.接口的使用步骤
5.继承父类并实现多个接口
6.接口之间的多继承
接口的概念
接口是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员,其中最终哟啊的内容就是其家中的抽象方法
接口的定义格式
public interface 接口名称{
接口内容
}
接口包含的内容
1.常量
package demopra.Interface;
//定义一个接口
public interface InterfaceContent01 {
//接口包含的内容(常量)
double PI = 3.141592654;
}
2.抽象方法
package demopra.Interface;
//定义一个接口
public interface InterfaceContent02 {
//接口包含的内容(抽象方法)
public abstract void method();//(public abstract两个关键字可以省略)
}
3.默认方法
1.备注:接口当中的默认方法可以解决接口升级的问题
2.接口的默认方法可以通过接口实现类对象进行直接调用
3.接口的默认方法可以被接口的实现类进行覆盖重写
package demopra.Interface;
/*
格式:
public default 返回值类型 方法名称(参数列表){
方法体
}
*/
//定义一个接口
public interface InterfaceContent03 {
//接口包含的内容(默认方法)
public default void method03(){
System.out.println("这是一个默认方法");
}
}
package demopra.Interface; public class InterfaceContentt03Test implements InterfaceContent03{
public static void main(String[] args) {
//创建实现类对象
InterfaceContentt03Test ic = new InterfaceContentt03Test();
//实现类对象直接调用接口的默认方法
ic.method03();
}
// //实现类覆盖重写接口的默认方法
// @Override
// public void method03() {
// System.out.println("实现类覆盖重写接口的默认方法");
// }
}
4.静态方法
package demopra.Interface;
/*
格式:
public static 返回值类型 方法名称(){
方法体
}
提示:就是将abstract或者default换成static 即可,记得带上方法体{}
注意事项:不能通过接口实现类对象来调用接口当中的静态方法,只能通过接口名称来调用
格式:
接口名称.静态方法(参数);
*/
//定义一个接口
public interface InterfaceContent04 {
//接口包含的内容(静态方法)
public static void method04(){
System.out.println("这是一个静态方法");
}
}
package demopra.Interface;
//创建一个接口的实现类
public class InterfaceContentt04Test implements InterfaceContent04{
public static void main(String[] args) {
//创建一个实现类对象
InterfaceContentt04Test ic = new InterfaceContentt04Test();
//错误写法,会报错
// ic.method04(); //正确调用方法
InterfaceContent04.method04();//执行结果:这是一个静态方法
}
}
5.私有方法
package demopra.Interface;
/*
为什么要用私有方法:
我们需要抽取一个共有方法,用来解决两个默认方法之间重复代码的问题。
但是这个共有方法不应该让实现类使用,应该是私有化的。
私有方法的两种用法:
普通私有方法:解决多个默认方法之间代码重复问题
格式:
private 返回值类型 方法名称(参数列表){
方法体
}
静态私有方法:解决多个静态方法之间代码重复问题
格式:
private static 返回值类型 方法名称(){
方法体
}
*/
//定义一个接口
public interface InterfaceContent05 {
//接口包含的内容(私有方法)
public static void method0501(){
System.out.println("这是一个普通私有方法1");
method05();
} public static void method0502(){
System.out.println("这是一个普通私有方法2");
method05();
}
//定义一个普通私有方法
private static void method05(){
System.out.println("AAAA");
System.out.println("BBBB");
}
//静态私有方法同理
}
package demopra.Interface; public class InterfaceContentt05Test {
public static void main(String[] args) {
//直接通过接口名调用
InterfaceContent05.method0501();
InterfaceContent05.method0502();
//错误的写法,private不能直接调用
// InterfaceContent05.method05();
}
//静态私有方法同理 /*
结果:
这是一个普通私有方法1
AAAA
BBBB
这是一个普通私有方法2
AAAA
BBBB
*/
}
接口的使用步骤
1.接口不能直接使用,逆序有一个"实现类了"来"实现"该接口
格式:
public class 实现类名称 implements 接口名称{
实现类内容
}
2.接口的实现必须覆盖实现接口中所有的抽象方法
实现:去掉abstract关键字,加上方法体大括号
3.创建实现类对象,进行使用
备注:如果实现类并没有覆盖重写接口中所有的实现方法,那么这个实现类自己必须是抽象类
继承父类并实现多个接口
使用接口的时候,需要注意:
1.接口是没有静态代码块或者构造方法的。
2.一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。
格式,
public class MyInterfaceImpl impl ements MyInterfaceA, MyInterfaceB {
//覆盖重写所有抽象方法
}
3.如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可。
4.如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。
5.如果实现类锁实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写。
6.一个类如果直接父类当中的方法,和接口当中的默认方法产生了冲突,优先用父类当中的方法。
接口之间的多继承
1.类与类之间是单继承的.直接父类只有一个。
2.类与接口之间是多实现的。一个类可以实现多个按口。
3.接口与接口之间是多继承的。
注意事项
1多个父接口当中的抽象方法如果重复,没关系。
2.多个父接口当中的默认方法如果重复,那么子接口必须进行默认方法的覆盖重写, [而且带着default关键字]
Java之路---Day11(接口)的更多相关文章
- Java之路——名词解释(一)
一.开篇 许多人在初接触Java的时候,都会被各种Java的英文缩写名词给弄得头晕脑胀.看一个技术,内容里又会有一堆其他的技术名词,看了半天不知所云.尝试去查一下这些名词的解释,除了非常学术性的解释之 ...
- Java之路——敬JAVA初学者(作者:MoMo)
作为一名大四的毕业生,大学三年过,有得有失.作为一个喜欢编程,喜欢JAVA的人,自学其实是一件美事,很有意思的事.要是能再找个女朋友一起学.嘿嘿,就不枉在大学走了一遭啊! 要离开学校了,还是想留 ...
- Java 中的集合接口——List、Set、Map
Java 中的集合接口——List.Set.Map 什么叫集合:集合就是Java API所提供的一系列类的实例,可以用于动态存放多个对象.这跟我们学过的数组差不多,那为什么我们还要学集合,我们看看数组 ...
- 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案
方案特点: 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案,简化软件开发流程,减少各应用系统相同模块的重复开发工作,提高系统稳定性和可靠性. 基于HTTP协议的开发接口 使用特点在网页 ...
- 【java】[转]标记接口和标记注解注解
Java中的标记接口和标记注解 http://blog.sina.com.cn/s/blog_7fdce91f0101d93m.html
- JAVA:抽象类VS接口
JAVA中抽象类和接口的区别比较,以及它们各自的用途. 1.JAVA抽象类: 抽象类除了不能实例化以外,跟普通类没有任何区别.在<JAVA编程思想>一书中,将抽象类定义为“包含抽象方法的类 ...
- 转:二十一、详细解析Java中抽象类和接口的区别
转:二十一.详细解析Java中抽象类和接口的区别 http://blog.csdn.net/liujun13579/article/details/7737670 在Java语言中, abstract ...
- java.util.Map.Entry接口
java.util.Map.Entry接口主要就是在遍历map的时候用到,给你个例子:package test;import java.util.*;import java.util.Map.Entr ...
- Java IO 四大附加接口、try-with-resource
Java IO 四大附加接口.try-with-resource @author ixenos 四大附加接口 Closeable.Flushable.Readable.Appendable Close ...
随机推荐
- RSA前台加密后台解密的应用
写在前面 项目安全测试需要将登录功能修改, AES加密不符合要求, 现改为RSA非对称加密.(将登录密码加密后传给后台, 后台解密后再进行一系列的校验) .期间遇到了前台js加密但是后台解密失败的问题 ...
- IntelliJ IDEA 运行你的第一个Java应用程序 idea运行main方法
IntelliJ IDEA 运行你的第一个Java应用程序创建项目让我们创建一个简单的Java Hello World项目. 单击创建新的项目. 打开新建项目向导.你应该注意的主要是项目的SDK.SD ...
- mapdb的适用场景介绍
对于大部分系统来说,mapdb并无太大价值,而且增加了成本.但是如果一级缓存巨大例如数以十GB级别,或占据了整个JVM的1/2以上,mapdb的价值就会体现出来.正如其官网介绍: MapDB prov ...
- session与getSession()用法总结
一.session 1.session的过期时间是从什么时候开始计算的?是从一登录就开始计算还是说从停止活动开始计算? 从session不活动的时候开始计算,如果session一直活动,session ...
- Java基础 awt Font 四种字体样式
JDK :OpenJDK-11 OS :CentOS 7.6.1810 IDE :Eclipse 2019‑03 typesetting :Markdown code ...
- odoo开发笔记 -- odoo权限管理
odoo框架 整体权限可以分为4个级别: (1) 菜单级别: 不属于指定菜单所包含组的用,看不到相应菜单.不安全,只是隐藏菜单,若用户知道菜单ID,仍然可以通过指定URL访问(2) 对象级别: 对某个 ...
- 解决pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your path问题
解决方案: 找到python的安装路径下的pytesseract: 例如我的是 C:\develop\Python\Lib\site-packages\pytesseract .用文本编辑器打开 ...
- server computer anaconda
star@xmatrix:~/Anaconda$ star@xmatrix:~/Anaconda$ conda create -n wind1 python=3.6Solving environmen ...
- postman 测试Excel文件导入导出功能
1.导入的测试方法 选择form-data,key值填写方法对应的参数,选择File,Value处上传文件即可. 2. 导出的测试方法 在导出文件的时候,响应结果是乱码,然后在测试的时候选择下载,下载 ...
- coding git push 403 时
直接修改 项目目录下的 .git/config url url = https://coding用户名:coding密码@git.coding.net/coding账号/coding项目名称.gi ...