Java中的接口是什么?
来源:互联网 发布:openwrt软件源地址 编辑:程序博客网 时间:2024/06/04 18:14
我眼里的接口
从字面上理解“接口”,就像你家的电源插座一样,你只要一看到它就知道,可以用来给手机充电,电视机、电脑通电源。这时候你并不会去管它为什么能给手机充电,电脑通电源。因为这对你来说并不重要,你只需要知道它可以用来做什么,你也不会去管它是什么牌子的插座,是公牛的,还是西门子的,因为你不需要去了解这些,你只需要它实现它的功能。
接口定义的基本语法:
[修饰符]interface 接口名 [extends父接口1,父接口2…]
{
零到多个常量定义…
零到多个抽象方法的定义…
}
比如我们出去玩,然后突然肚子饿了,看见一个KFC的店,我们就知道有地方可以吃东西喝东西了。这里KFC就像是一个接口,我们不用知道KFC里面的汉堡、薯条、果汁、可乐是怎么做出来的,也不用知道是谁开的店,我们只需要知道有的吃,有的喝就可以了。
这里定义一个名为KFC的接口:
public interface KFC { public void eat(); public void drink();}
然后一个小孩本来在外面玩耍,我们创建一个小孩类
public class Kid { public static void main(String[] args) { System.out.println("小孩在玩耍"); } }
小孩玩着玩着肚子饿了,走进了KFC,我们理解为,在孩子类中与KFC接口的产生了连接,也就是接口的方法规范
public class Kid implements KFC{ public static void main(String[] args) { System.out.println("小孩在玩耍"); }public void eat() { System.out.println("小孩在吃汉堡"); }public void drink() { System.out.println("小孩在喝可乐"); } }
然后这个小孩的父母出来找这个小孩,我们创建一个父母类
public class Parents { public static void main(String[] args) { System.out.println("父母在找小孩"); } }
然后找到了KFC,发现小孩在吃的很开心,于是,父母也在KFC陪小孩一起吃,这时候同样理解为,KFC接口在父母类的方法规范
public class Parents implements KFC { public static void main(String[] args) { System.out.println("父母在找小孩"); } public void eat() { System.out.println("父母在吃薯条"); } public void drink() { System.out.println("父母在喝果汁"); } }
然后小孩和父母都在KFC吃东西喝东西,这里理解为KFC接口的实现
public class useKFC { public static void main(String[] args) { KFC kid=new Kid(); KFC parents=new Parents(); kid.eat(); kid.drink(); parents.eat(); parents.drink(); }}
输出内容为:
小孩在吃汉堡
小孩在喝可乐
父母在吃薯条
父母在喝果汁
我们还可以通过关键字instanceof检测接口对象”kid和parents”是否实现了”第一个接口”,返回一个布尔值
public class useKFC { public static void main(String[] args) { KFC kid=new Kid(); KFC parents=new Parents(); kid.eat(); kid.drink(); parents.eat(); parents.drink(); System.out.println(kid instanceof KFC); System.out.println(parents instanceof KFC); }}
输出结果:
小孩在吃汉堡
小孩在喝可乐
父母在吃薯条
父母在喝果汁
true
true
接口与类相似点:
一个接口可以有多个方法。
接口文件保存在 .java 结尾的文件中,文件名使用接口名。
接口的字节码文件保存在 .class 结尾的文件中。
接口相应的字节码文件必须在与包名称相匹配的目录结构中。
接口与类的区别:
接口不能用于实例化对象。
接口没有构造方法。
接口中所有的方法必须是抽象方法。
接口不能包含成员变量,除了 static 和 final 变量。
接口不是被类继承了,而是要被类实现。
接口支持多重继承。
接口特性:
接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误。
接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
“抽象类和接口的区别:
1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
3. 接口中不能还有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。
- Java中的接口是什么?
- java中的接口和抽象类是什么?
- java中的接口和抽象类是什么?
- java中的接口和抽象类是什么?
- java中的接口和抽象类是什么?
- Java 接口在编程中的作用是什么?
- java接口作用是什么?
- java接口作用是什么
- 什么是java 接口,用处是什么
- java接口作用是什么?(经典)
- java中的super()是什么
- java中的super()是什么?
- java中的域是什么?
- java中的Serializable是什么
- java中的super()是什么
- java中的 | ^ & 分别是什么?
- java中的域是什么?
- java中的super()是什么
- LeetCode(455)Assign Cookies
- 多态中的this参数
- 通过SSH实现 端口映射
- 设置隐藏标题栏
- Ubuntu中的符号
- Java中的接口是什么?
- python
- React Native 之 Natigator与NatigatorIOS使用
- 【BZOJ】2111 [ZJOI2010] Perm 排列计数
- Hibernate与Mybatis对比
- LeetCode 82. Remove Duplicates from Sorted List II
- 安卓让应用程序获得系统权限讲解
- 以终为始
- 串口通信的基本知识