Java 如何实例化接口?

Java 如何实例化接口?,java,swing,interface,awt,actionlistener,Java,Swing,Interface,Awt,Actionlistener,在Swing中,我使用ActionListener或任何其他侦听器接口 一般来说,我不能创建接口的对象。 如果我将新运算符与任何构造函数名称一起使用,将创建一个对象 我的以下代码有问题: jbtOK:是一个按钮对象 ActionListener是一个接口 如何在addActionListener方法中使用新的ActionListener() 因为创建了一个对象。但是,我不能从接口创建对象 这只在内部类中可能吗?i、 在内部类中,我可以创建接口的对象: jbtOK.addActionListene

在Swing中,我使用
ActionListener
或任何其他侦听器接口

一般来说,我不能创建接口的对象。 如果我将新运算符与任何构造函数名称一起使用,将创建一个对象

我的以下代码有问题:

jbtOK:是一个按钮对象

ActionListener是一个接口

如何在
addActionListener
方法中使用新的
ActionListener()

因为创建了一个对象。但是,我不能从接口创建对象

这只在内部类中可能吗?i、 在内部类中,我可以创建接口的对象:

jbtOK.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
           
         System.out.println("hi");
       }
     });
 
:

不能直接实例化接口,但可以实例化实现接口的类。可以通过类名、超类名或接口名引用对象

还可以阅读一些关于匿名类的内容

new class-name ( [ argument-list ] ) { class-body }
它是一个匿名类,您正在实例化并传递给addActionListener方法。addActionListener将ActionListener作为参数,因此,由于您提供了actionPerformed方法,因此它假定您传递给它的匿名类是ActionListener

尝试更改此actionPerformed方法的名称。它将不再工作,因为您正在传递的匿名类没有实现ActionListener接口。查看编译器收到的错误消息。

不能直接实例化接口,但可以实例化实现接口的类。可以通过类名、超类名或接口名引用对象

还可以阅读一些关于匿名类的内容

new class-name ( [ argument-list ] ) { class-body }
它是一个匿名类,您正在实例化并传递给addActionListener方法。addActionListener将ActionListener作为参数,因此,由于您提供了actionPerformed方法,因此它假定您传递给它的匿名类是ActionListener


尝试更改此actionPerformed方法的名称。它将不再工作,因为您正在传递的匿名类没有实现ActionListener接口。查看编译器收到的错误消息。

使用new关键字将对象创建到内存中,并在创建接口的对象时需要实现它。让我们与显式类进行比较

假设您定义了实现这个ActionListener接口的类,您要做什么

class MyActionListener implements ActionListener{
    // now here you need implement all of the method which defined into the ActionListener interface
}
现在,您可以使用这个类来注册侦听器,以便像这样执行操作

jbtOK.addActionListener(new MyActionListener());

这是显式的实现,当您直接实现它时,它被称为匿名类,正如您在这里使用ActionListener接口定义的那样,使用new关键字将对象创建到内存中,并且在创建接口的对象对象时,需要实现它。让我们与显式类进行比较

假设您定义了实现这个ActionListener接口的类,您要做什么

class MyActionListener implements ActionListener{
    // now here you need implement all of the method which defined into the ActionListener interface
}
现在,您可以使用这个类来注册侦听器,以便像这样执行操作

jbtOK.addActionListener(new MyActionListener());

这是显式实现,当您直接实现它时,它被称为匿名类,正如您在这里使用ActionListener接口定义的那样

如果我理解您的问题,您不能使用接口的方法,因为接口的所有方法都是抽象的(空的,没有实现),然后必须实现接口所请求的所有方法

例如,由于必须向按钮添加
ActionListener
,然后将其与
actionPerformed
方法中调用的操作关联,因此必须在代码的第一行声明:

public class your_class implements ActionListener

其中需要关键字
implements
来指示您正在实现
ActionListener
接口或任何其他接口的抽象方法,以便将这些方法用于您的对象

如果我理解你的问题,你就不能使用接口的方法,因为接口的所有方法都是抽象的(空的,没有实现),那么你必须实现接口要求的所有方法

例如,由于必须向按钮添加
ActionListener
,然后将其与
actionPerformed
方法中调用的操作关联,因此必须在代码的第一行声明:

public class your_class implements ActionListener

其中需要关键字
implements
来指示您正在实现
ActionListener
接口或任何其他接口的抽象方法,以便将这些方法用于您的对象

这是一个问题,没有任何研究,这不是一个坏问题。它只是制定得很糟糕。sri问“你怎么能实例化一个接口?我们已经知道接口不是类!”这对初学者来说是个好问题,每个人都有第一次!然而,在这里提问之前,这是一个很好的实践研究……这是一个问题,没有任何研究,这不是一个坏问题。它只是制定得很糟糕。sri问“你怎么能实例化一个接口?我们已经知道接口不是类!”这对初学者来说是个好问题,每个人都有第一次!然而,在这里提问之前,这是一个很好的实践研究……是的,我认为他忘记了
实现ActionListener
单词。是的,我认为他忘记了
实现ActionListener
单词。