来源:网络技术联盟站 链接:https://www.wljslmz.cn/19657.html 接口是java中的核心概念之一,Java 接口是 Java 编程语言的核心部分,不仅在 JDK 中而且在Java 设计模式中也被广泛使用,大多数框架大量使用java接口。 那么什么是接口?为啥需要使用接口?接口应该怎么使用?本文一一给大家介绍。 在 Java 中,接口是一种抽象类型,包含方法和常量变量的集合,它是Java中的核心概念之一,用于实现抽象、多态和多重继承。 Java 接口是方法名称的集合,只是名称,没有函数体,这些函数是作为接口定义的工作的一部分执行的。 例如,如果我们有一个动物类,动物可能会有许多不同的动作,一个类可以实现任意数量的接口。 这里我们可以举个例子给大家说明一些下,为啥我们需要接口。 如果你有个需求,猫咪要集成动物类和宠物类: 但是Java是不支持多集成的,所以这个时候你应该怎么办? 那肯定是使用接口去实现,猫咪可以继承动物类,实现宠物类。 我们用代码的形式简单去实现一下。 首先写一个Pet接口: 然后写一个猫咪的类去实现Pet接口: 运行结果: 这就是接口的写法。 接口在使用过程中,有很多规则,我们必要要牢记,下面列举几个: 随着 Java 8 的发布,我们现在可以在接口内添加带有实现的方法,这些方法称为默认方法。 要在接口中声明默认方法,我们使用default关键字,例如: 有没有疑问,为啥要引入默认方法? 如果我们需要在接口中添加一个新方法,可以在接口中添加方法而无需实现,但是这个不太现实,因为你一旦在接口中定义了一个新的方法,那么所有实现这个接口的实现类必须要重写这个新的方法,这肯定不是我们想要的结果 为了解决这个问题,Java 引入了默认方法,默认方法像普通方法一样被继承。 我们用代码的形式给大家演示一下: 接口Pet: 实现类1-猫咪: 实现类2-狗狗: 测试类: 输出: 我们注意到猫咪类有实现Pet接口中的默认方法dance(),但是狗狗类没有实现该方法,这个就体现了灵活性,默认方法只是其中一个或者多个实现类需要用到。 Java 8中还引入了静态方法,所谓静态方法,就是用关键字 static 定义的方法。与 Interface 中的其他方法不同,这些静态方法包含函数的完整定义,并且由于定义完整且方法是静态的,因此这些方法在实现类中不能被覆盖或更改。 接口中的静态方法可以在接口中定义,但不需要在实现类中重写。 我们直接上代码: Pet接口: Cat实现类: Test测试类: 输出: 接口是java中非常重要也是很常用的,本文介绍了接口的定义、优缺点、使用,还有java8新引入的概念:默认方法、静态方法,希望本文对您学习接口有所帮助,有任何问题,欢迎在下方评论区与我讨论。一、什么是接口?
二、为啥需要使用接口?
package com.wangrui.kmz.test;
/**
* @author: wangrui
* @date: 2022/9/30 6:39
* @description: 宠物接口
*/
public interface Pet {
/**
* 奔跑方法
*/
void run();
}package com.wangrui.kmz.test;
/**
* @author: wangrui
* @date: 2022/9/30 6:41
* @description:
*/
public class Cat implements Pet{
@Override
public void run() {
System.out.println(\\\"我是猫咪,我实现了Pet接口,并重写了run方法。\\\");
}
public static void main(String[] args) {
Cat cat = new Cat();
cat.run();
}
}我是猫咪,我实现了Pet接口,并重写了run方法。
三、接口有哪些规则?
四、接口的优缺点
4.1 优点
4.2 缺点
五、接口中其他重要点
5.1 默认方法
package com.wangrui.kmz.test;
/**
* @author: wangrui
* @date: 2022/9/30 6:39
* @description: 宠物接口
*/
public interface Pet {
/**
* 奔跑方法
*/
void run();
/**
* 默认方法
*/
default void getAction(){
System.out.println(\\\"接口的默认方法\\\");
}
}package com.wangrui.kmz.test;
/**
* @author: wangrui
* @date: 2022/9/30 6:39
* @description: 宠物接口
*/
public interface Pet {
/**
* 奔跑方法
*/
void run();
/**
* 默认方法
*/
default void dance(){
System.out.println(\\\"我会跳舞\\\");
}
}package com.wangrui.kmz.test;
/**
* @author: wangrui
* @date: 2022/9/30 6:41
* @description:
*/
public class Cat implements Pet{
@Override
public void run() {
System.out.println(\\\"我是猫咪,我实现了Pet接口,并重写了run方法。\\\");
}
@Override
public void dance() {
System.out.println(\\\"我是猫咪,我实现了Pet的默认方法,我会跳舞\\\");
}
}package com.wangrui.kmz.test;
/**
* @author: wangrui
* @date: 2022/9/30 7:05
* @description:
*/
public class Dog implements Pet{
@Override
public void run() {
System.out.println(\\\"我是狗狗,我实现了Pet接口,并重写了run方法。\\\");
}
}package com.wangrui.kmz.test;
/**
* @author: wangrui
* @date: 2022/9/30 7:07
* @description:
*/
public class Test {
public static void main(String[] args) {
Cat cat = new Cat();
cat.run();
cat.dance();
Dog dog = new Dog();
dog.run();
}
}我是猫咪,我实现了Pet接口,并重写了run方法。
我是猫咪,我实现了Pet的默认方法,我会跳舞
我是狗狗,我实现了Pet接口,并重写了run方法。5.2 静态方法
package com.wangrui.kmz.test;
/**
* @author: wangrui
* @date: 2022/9/30 6:39
* @description: 宠物接口
*/
public interface Pet {
/**
* 静态方法
*/
static void eat(){
System.out.println(\\\"我是静态方法!\\\");
}
}package com.wangrui.kmz.test;
/**
* @author: wangrui
* @date: 2022/9/30 6:41
* @description:
*/
public class Cat implements Pet{
}package com.wangrui.kmz.test;
/**
* @author: wangrui
* @date: 2022/9/30 7:07
* @description:
*/
public class Test {
public static void main(String[] args) {
Pet.eat();
}
}我是静态方法!
六、总结
原创文章,作者:网络技术联盟站,如若转载,请注明出处:https://www.sudun.com/ask/34754.html