一个实例理解 Java 的接口(interface)用处与用法

本贴最后更新于 2237 天前,其中的信息可能已经斗转星移

6.jpg

最近突然想到一个问题:Runnable 是如何允许我自定义执行内容而进行多线程处理的?
首先看使用 Runnable 创建多线程的方法:

Runnable runnable = new Runnable() { @Override public void run() { System.out.println("hello~"); } }; Thread thread = new Thread(runnable); thread.run();

我们可以看到首先创建了一个 Runnable 接口实例,Runnable 接口源代码如下:

package java.lang; /* * @author Arthur van Hoff * @see java.lang.Thread * @see java.util.concurrent.Callable * @since JDK1.0 */ public interface Runnable { public abstract void run(); }

可以看到的是在 Runnable 接口中只有一个 run 方法待用户定义。
当我们重写 Runnable 的 run 方法后,我们就有了一个完整的方法,然后通过 Thread 传入接口并使用 run(); 方法运行。

所以 Thread 包括了多线程执行的所有方法,而 Runnable 仅提供了一个供用户重写的接口。

回过头来,我们创建一个实例:

  • Main.java
  • TestIF.java

TestIF.java

该接口仅负责存储一个 String 字符串:

public interface TestIF { String str(); }

Main.java

public class Main { public static void main(String[] args) { //创建一个TestIF接口实例并返回 TestIF testIF = IF(); //传递给另一个方法并输出 PrintIF(testIF); } public static TestIF IF() { TestIF testIF = new TestIF() { @Override public String str() { return "SUCCESSFUL!"; } }; return testIF; } public static void PrintIF(TestIF testIF) { System.out.println("Has received: " + testIF.str()); } }

输出结果

Has received: SUCCESSFUL!

总结

来自 jiany 的订正:
抽象是模板,接口是契约。接口规定了这个类可以实现的功能。

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3200 引用 • 8215 回帖
  • 代码
    467 引用 • 586 回帖 • 9 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • gaoyangwolf 1 via iPhone

    大神。总结的很到位!

  • 其他回帖
  • godboys

    你可以买本 码出高效 看一下 里面介绍的很详细

    1 回复
  • godboys 1

    还是大佬厉害

  • adlered via macOS

    感谢。已引用说明

    1 回复
  • 查看全部回帖