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 ...
随机推荐
- Guava Cache 参数配置说明
系统中用到了了Guava Cache: private DriverInfoServiceImpl(DriverClientProxy driverClientProxy) { this.driver ...
- WINDOWS 命令行调用SAS代码 并指定输出路径 示例
ECHO "设置SAS.EXE 路径" SET PATH=D:\Program Files\SASHome\SASFoundation\9.4\SAS.EXE echo " ...
- Win10登陆界面卡住,进去后无法打开网络相关的设置,谷歌浏览器无法上网
今天Win10抽风,进入登录页面输入用户名和密码之后,大约过了10分钟才进入桌面.重启后仍然如此. 经过调查,问题主要出在网络相关模块上,网络无法正常初始化,导致登录一直卡在网络初始化上. 解决方法如 ...
- paddlepaddle如何预加载embedding向量
使用小批量数据时,模型容易过拟合,所以需要对全量数据进行处理,我是用的是word2vec训练的词向量. 那么训练好对词向量如何加载呢? #!/usr/bin/env python # -*- codi ...
- C#-DllImport 路径问题
原文:C# DllImport 相对路径无法找到dll DllImport DLL查找顺序:1.应用程序所在目录2.Windows目录和Windows\System32目录3.环境变量目录 只需要你把 ...
- Python3基础 __file__ 查询模块的完整路径
Python : 3.7.3 OS : Ubuntu 18.04.2 LTS IDE : pycharm-community-2019.1.3 ...
- java多线程(六)线程控制类
1. 多线程控制类 为了保证多线程的三个特性,Java引入了很多线程控制机制,下面介绍其中常用的几种: l ThreadLocal l 原子类 l Lock类 l Volatile关键字 ...
- 搭建npm私服流程
npm私服必要性 1. 如果公司处于隐私保护的需要,不想将自己封的包推到npm社区,但又急需要一套完整的包管理工具来管理越来越多的组件,模块,项目.对于前端,最熟悉的莫过于npm,bower等,但是b ...
- python初级(302) 6 对象(四)
一.复习 1.什么是多态 2.复习上一节课内容 class Triangle: """ 三角形类 """ def __init__(self ...
- C++内存管理5-处理new分配内存失败情况(转)
C++内存管理5-处理new分配内存失败情况(转) endl; 参考博客: https://www.cnblogs.com/findumars/p/9905195.html