JAVA_SE基础——47.接口
如果一个抽象类中的所有方法都是抽象的,则可以将这个类用另一种方法来定义,即接口~
在定义接口时,需要用interface关键字来声明,具体实例如code1
接口的定义格式:
interface 接口名{
}
code1
- interface Animal{
- int num = 1 ; //定义全局变量
- void breathe(); //定义抽象方法
- void run();
- }
上面代码中,Animal就是一个接口。在code1中 会发现抽象方法breathe()并没有使用abstract关键字来修饰,这是因为接口定义的方法和变量都包含一些默认修饰符。
接口中定义的方法默认使用“public abstract”来修饰 即是抽象方法。
接口中定义的变量默认使用“public static final”来修饰 即是全局常量。
实现接口的格式:
class 类名 implements 接口名{
}
code2(实现A接口)
- package day09;
- interface A{
- //成员变量
- public static final int num=1;
- //成员函数
- public void print();
- }
- public class Demo7 {
- //实现接口中的方法
- public void print(){
- System.out.println("这个是接口中的print方法...");
- }
- public static void main(String[] args){
- Demo7 d = new Demo7();
- d.print();
- }
- }
code2运行结果:
接口的特点:
1. 类实现接口可以通过implements实现,实现接口的时候必须把接口中的所有方法实现,一个类可以实现多个接口。
2. 接口中定义的所有的属性默认是public static final的,即静态常量既然是常量,那么定义的时候必须赋值。
3. 接口中定义的方法不能有方法体。接口中定义的方法默认添加public abstract
4. 有抽象函数的不一定是抽象类,也可以是接口类。
5. 由于接口中的方法默认都是抽象的,所以不能被实例化。
6. 对于接口而言,可以使用子类来实现接口中未被实现的功能函数。
7. 如果实现类中要访问接口中的成员,不能使用super关键字。因为两者之间没有显示的继承关系,况且接口中的成员成员属性是静态的。可以使用接口名直接访问。
8. 接口没有构造方法。
9.当一个类实现接口时,如果这个类是抽象类,则实现接口中的部分方法即可,否者需要实现接口中的所有方法。
10.一个类通过implements关键字实现接口时,可以实现多个接口,被实现的多个接口之间要用逗号隔开。具体如code3
11.一个接口可以通过extends关键字继承多个接口,接口之间用逗号隔开。具体如code4
12.一个类在继承另一个类的同时还可以实现接口,此时,extends关键字必须位于implements关键字前。具体如code5
接口(interface):usb接口,主要是使用来拓展笔记本的功能,那么在java中的接口主要是使用来拓展定义类的功能,可以弥补java中单继承的缺点。
code3(一个类实现多个接口)
- interface Run{
- //code……
- }
- interface Fly{
- //code……
- }
- class Bird implements Run,Fly{
- //code……
- }
code4(接口继承多个接口)
- interface A{
- //code……
- }
- interface B{
- //code……
- }
- interface C extends A,B{
- //code……
- }
code5(extend关键字必须位于implements关键字之前)
- class A extends B implements C{ //先继承 再实现
- //code……
- }
接口的作用:
1. 程序的解耦。 (低耦合)
2. 定义约束规范。
3. 拓展功能。
接口的用途不但多,而且是非常必要。这就是为什么我们为什么老是提“面向接口编程”的概念。
你现在对其理解不深没有关系,只是在实际中先用。等积累到一定程度就知道接口的好处了。
为什么要用接口 :用于处理多变的情况。
接口在实际开发过程中最大好处是,你可以按照设计,先把接口写好,然后分配大伙干活的时候,告诉a们去用写好的接口去实现他们的具体功能,而告诉b们,去写那些已经写好但是没有具体的代码的接口,这样可以提高工作效率。并且底层和应用也通过接口做了一个很明显的分层。
interface 接口名{
}
JAVA_SE基础——47.接口的更多相关文章
- JAVA_SE基础——50.接口关系下的多态
接口关系下的多态和继承关系下的多态 相差无几,应该更简单些~ 多态: 父类的引用类型变量指向了子类的对象或者是接口类型的引用类型变量指向了接口实现类 的对象. 实现关系下的多态: 接口 变量 = ...
- JAVA_SE基础——6.标识符&关键字
学会写helloworld之后, 我们就开始来认识标识符&关键字 一.标识符 标识符是指可被用来为类.变量或方法等命名的字符序列,换言之,标识符就是用户自定义的名称来标识类.变量或方法等.更 ...
- 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait
[源码下载] 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait 作者:webabcd 介绍速战速决 之 PHP 类基础 抽象类 接口 trait 示例1.类的相关知识点 1(基础 ...
- [.net 面向对象编程基础] (16) 接口
[.net 面向对象编程基础] (16) 接口 关于“接口”一词,跟我们平常看到的电脑的硬件“接口”意义上是差不多的.拿一台电脑来说,我们从外面,可以看到他的USB接口,COM接口等,那么这些接口的目 ...
- spring中基础核心接口总结
spring中基础核心接口总结理解这几个接口,及其实现类就可以快速了解spring,具体的用法参考其他spring资料 1.BeanFactory最基础最核心的接口重要的实现类有:XmlBeanFac ...
- JAVA_SE基础——26.[深入解析]局部变量与成员变量的区别
黑马程序员入学blog ... 如果这章节很难懂的话应该返回去先看 JAVA_SE基础--10.变量的作用域 定义的位置上区别: 1. 成员变量是定义在方法之外,类之内的. 2. 局部变量是定义在方 ...
- JAVA_SE基础——9.基本数据类型间的转换
前面我已经教会大家基本的数据类型进行了介绍, 然后这篇文章,我来介绍下,基本数据类型的转换. Java中有两种类型转换形式,分别是自动类型转换和强制类型转换. Step1.自动类型转换. 自动类型 ...
- JAVA_SE基础——8.基本数据类型
基本数据类型有:整数类型.浮点类型.字符类型.布尔类型 整数类型 整数类型用来存储整数数值,即没有小数部分的数值.与C.C++语言相同,整数在Java语言中有3种表示形式:十进制.八进制和十六进制. ...
- JAVA_SE基础——7.常量&变量
上一篇,我讲了标识符&关键字 这篇我来解释下变量&常量~~~ 变量与常量这两个概念相信大家都不会感到陌生,在数学中就已经涉及了变量与常量.理解变量与常量,可以举这样一个例子: 例 ...
随机推荐
- C# 程序之间传参数,Args 接收参数的处理
备忘,或者留给暂未接触但需要了解的人. C#在一个进程内传参数方法那是相当多,但是涉及到程序之间传参数就不是那么方便了(当然socket,内存共享等方式属于另一类,此处不讨论),我们的C或者C#,亦或 ...
- play @Before 的使用
用play 框架也又一段时间了,也算是有了些经验,今天就总结下@Before 的使用. 这个注解能主要在控制器中使用,用于在Action 前进行拦截 unless 表示不用拦截 的Action @Be ...
- Python多线程爬虫与多种数据存储方式实现(Python爬虫实战2)
1. 多进程爬虫 对于数据量较大的爬虫,对数据的处理要求较高时,可以采用python多进程或多线程的机制完成,多进程是指分配多个CPU处理程序,同一时刻只有一个CPU在工作,多线程是指进程内部有多个类 ...
- Redis 基础(一)
Remote Dictionary Server(Redis)是一个由Salvatore Sanfilippo写的key-value存储系统.Redis是一个开源的使用ANSI C语言编写.遵守BSD ...
- RedissonLock分布式锁源码分析
最近碰到的一个问题,Java代码中写了一个定时器,分布式部署的时候,多台同时执行的话就会出现重复的数据,为了避免这种情况,之前是通过在配置文件里写上可以执行这段代码的IP,代码中判断如果跟这个IP相等 ...
- 自动安装L2tp的脚本
来自于 https://teddysun.com/448.html #!/usr/bin/env bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/ ...
- 在虚拟机VMware上安装Linux系统教程
目录: 一. CentOS的安装 二. RedHat的安装 三. VMwaretools的安装 此处提供CentOS和RedHat两个版本的系统安装流程,至于选哪个 ...
- JAVA 新手注意事项
1. System.exit(0); 强行关闭虚拟机 2. System.out.println("*") 输出一个*并换行 (没后面的ln表 ...
- Spring容器中Bean的生命周期
- Nginx目录浏览功能
要给其他人提供一个patch的下载地址,于是想用nginx的目录浏览功能来做,需要让其他人看到指定一个目录下的文件列表,然后让他自己来选择该下载那个文件:效果如图. 实现步骤:在虚拟主机配置文件里面开 ...