接口详解介绍

简介: 接口详解介绍

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第28天

1.1接口简介

接口,在java中是一种引用数据类型,里面主要有常量、抽象方法(jdk及以前)、默认方法和静态方法(jdk8)、和私有方法(jdk9)。接口是一系列方法的声明,是一些方法的特征集合,一个接口只要方法的特征而没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现类的方法具有不同的功能。

1.2接口的格式 public interface 接口名称{ //常量 //抽象方法 //静态方法 //默认方法 //私有方法 } 使用interface来声明一个接口。 里面包含常量、抽象方法、静态方法、默认方法、私有方法,最主要的还是里面的抽象方法。 需要一个实现类来实现接口当中的所有抽象方法。

抽象方法 抽象方法定义格式:

public interface 接口名称{

public abstract void 抽象方法名称();

} 抽象方法使用abstract修饰,public abstract 可以省略,两个一起省略或者省略其中一个都是可以的(前期学习的时候建议不要省略),抽象方法没有方法体,

默认方法 默认方法定义格式:

public interface 接口名称{

public default void 默认方法名称(){
    //方法体
}

} 默认方法使用default关键字修饰,public可以省略不写,但default不能省略,默认方法主要给实现类(子类)覆盖重写或者调用。

静态方法 public interface 接口名称{

public static void 静态方法名称(){
    //方法体
}

} 静态方法使用static关键字修饰,public可以省略不写,静态方法只能接口来进行调用,不能通过实现类对象来调用,也不能被实现类所继承或者重写,静态方法只跟接口有关。

私有方法 public interface 接口名称{

private void 私有方法名称(){
    //方法体
}
private static 私有方法名称(){
    //方法体
}

} 私有方法分为:普通私有方法、静态私有方法。 私有方法使用private关键字修饰,供默认方法和静态方法使用。

1.3接口的实现 实现的概述 类与接口关系称为实现,即类实现接口,该类可以称为该接口的实现类,实现的动作与继承相仿,但实现类使用implements关键字, 实现类必须: 1.实现接口当中的所有抽象方法【必须】 2.继承或者重写接口当中的默认方法【可选】

实现类的格式:

public class 类名 implements 接口名称{

//方法体

} 抽象方法的使用 定义测试类:

接口: public interface LiveAble{ //定义抽象方法 public abstract void eat();

puclic abstract void sleep();

}

实现类: public calss Animal implements LiveAble{ @Override public void eat(){ System.out.println("吃东西"); }

@Override
public void sleep(){
    System.out.println("睡觉");
}

}

测试类: public class InterfaceDemo{ public static void main(String[] args){ //创建子类对象 Animal a = new Animal(); //调用实现后的方法 a.eat(); a.sleep(); }
}
实现类必须实现抽象类当中的所有抽象方法,如果没有实现接口当中的抽象方法,那么实现类就必须是一个抽象类,应为抽象方法所在的类必须是一个抽象类,
默认方法 定义测试类: 继承默认方法 代码如下:
接口: public interface LiveAble { public default void fly(){ System.out.println("天上飞"); } }
实现类: public class Animal implements LiveAble { // 继承,什么都不用写,直接调用 }
测试类: public class InterfaceDemo { public static void main(String[] args) { // 创建子类对象 Animal a = new Animal(); // 调用默认方法 a.fly(); } } 覆盖重写默认方法 代码如下:
接口: public interface LiveAble { public default void fly(){ System.out.println("天上飞"); } }
实现类: public class Animal implements LiveAble { @Override public void fly() { System.out.println("自由自在的飞"); } }
测试类: public class InterfaceDemo { public static void main(String[] args) { // 创建子类对象 Animal a = new Animal(); // 调用重写方法 a.fly(); } } 输出结果: 自由自在的飞 默认方法可以被实现类继承也可以被覆该重写。
静态方法 静态与.class 文件相关,只能使用接口名调用,不可以通过实现类的类名或者实现类的对象调用,代码如下: 接口: public interface LiveAble { public static void run(){ System.out.println("跑起来~~~"); } }
实现类: public class Animal implements LiveAble { // 无法重写静态方法 }
测试类: public class InterfaceDemo { public static void main(String[] args) { // Animal.run(); // 【错误】无法继承方法,也无法调用 LiveAble.run(); // } }输出结果: 跑起来~~~ 私有方法
私有方法:只有默认方法可以调用。 私有静态方法:默认方法和静态方法可以调用。 如果一个接口中有多个默认方法,并且方法中有重复的内容,那么可以抽取出来,封装到私有方法中,供默认方法 去调用。从设计的角度讲,私有的方法是对默认方法和静态方法的辅助。同学们在已学技术的基础上,可以自行测 试。代码如下: 接口: public interface LiveAble { default void func(){ func1(); func2(); }
private void func1(){ 
    System.out.println("跑起来~~~"); 

}

private void func2(){ 
    System.out.println("跑起来~~~"); 
}


相关文章
|
C#
C# 接口
C# 接口
73 0
|
7月前
|
关系型数据库
|
Java
【接口的使用】
【接口的使用】
63 0
|
前端开发 Java
写一个接口该注意什么?
写一个接口该注意什么?
64 0
接口的使用
接口的使用
88 0
|
程序员
14 接口
14 接口
106 0
|
Java Maven
一文了解ConfigurationConditon 接口
在了解ConfigurationCondition 接口之前,先通过一个示例来了解一下@Conditional 和 Condition。
115 0
|
JavaScript
46、EventTarget 接口
DOM 节点的事件操作(监听和触发),都定义在EventTarget接口
145 0
|
JavaScript 前端开发 容器
56、GlobalEventHandlers 接口
某个对象的abort事件(停止加载)发生时,就会调用onabort属性指定的回调函数。 各种元素的停止加载事件,到底如何触发,目前并没有统一的规定。因此实际上,这个属性现在一般只用在<img>元素上面。
154 0