gpt4 book ai didi

java - 为什么抽象属性在 Runnable 接口(interface)的子类中丢失?

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:07:25 24 4
gpt4 key购买 nike

我实际上是在学习线程。但是遇到一个非常基本的问题。我知道如果我在我的类中继承一个接口(interface),我必须在我的继承类中给出所有方法(在该接口(interface)中提到的)的定义,否则它必须被声明为抽象的。现在我尝试了非常简单的代码...

import java.util.*;
import java.lang.*;
import java.io.*;


abstract class Code implements Runnable
{
public static void main (String[] args) throws java.lang.Exception
{

}
}

编译没有问题,然后我从类代码中删除了 abstract 关键字,它显示编译错误,说类代码不是抽象的...

一定有错误。但是后来我做了什么,检查了一些变化,也从类中扩展了 Thread 类并重新编译了代码。而且我没有编译错误!虽然我没有给出 run() 方法的定义,但我也没有提到我的类是抽象的。那里...

 class Code extends Thread implements Runnable 
{
public static void main (String[] args) throws java.lang.Exception
{

}
}

意味着这个类失去了抽象属性。这怎么可能?请任何人解释。

最佳答案

Runnable 是一个接口(interface),它需要任何实现它的类来实现 run() 方法

public class A implements Runnable {
public void run() {
// implementation of run
}
}

Thread 是实现Runnable 接口(interface)的具体类。这意味着它已经具体实现了 run() 方法。

public class Thread implements Runnable {
public void run() {
// Java's implementation of run
// for the Thread class
}
}

当您定义一个扩展 Thread 的类时,这意味着它将扩展 Thread 类,该类已经实现了 Runnable 所需的一切> 界面。所以你不需要实现 run() 方法。但是,您可以覆盖 Thread 的实现,并在需要时选择性地调用它。

class A extends Thread {
@Override
public void run() {
// implementation of run
// optionally call super.run();
}
}

关于java - 为什么抽象属性在 Runnable 接口(interface)的子类中丢失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37267938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com