接口在Java中有构造函数吗?

接口在Java中有构造函数吗?,java,oop,interface,Java,Oop,Interface,我知道Java中的接口由虚拟机作为抽象类处理。因此,Java中的每个类,不管是抽象类还是非抽象类,都有一个构造函数。这是否意味着接口也有构造函数?一方面,由于构造函数是抽象类,所以有一个构造函数是有意义的。另一方面,它没有意义,因为接口没有任何要初始化的属性。 那么它实际上是如何工作的呢?接口没有构造函数。它们的实现是这样的。所有接口都是: interface MyInterface{ void addNumber(int amount); void subtractNumber

我知道Java中的接口由虚拟机作为抽象类处理。因此,Java中的每个类,不管是抽象类还是非抽象类,都有一个构造函数。这是否意味着接口也有构造函数?一方面,由于构造函数是抽象类,所以有一个构造函数是有意义的。另一方面,它没有意义,因为接口没有任何要初始化的属性。
那么它实际上是如何工作的呢?

接口没有构造函数。它们的实现是这样的。

所有接口都是:

interface MyInterface{
    void addNumber(int amount);
    void subtractNumber(int amount);
    int getNumber();
}
你不会“运行”一个接口,接口也不是你用来创建对象的东西

但是,实现接口的类确实具有构造函数:

class MyNumber implements MyInterface{
    private int myNumber;

    //Here is your constructor, called when you instantiate it.
    myNumber(int number){
        myNumber = number;
    }

    //Now you need to add the methods in your interface
    public void addNumber(int number){
        myNumber = myNumber + number;
    }

    public void subractNumber(int number){
        myNumber = myNumber - number;
    }

    public int getNumber(){
        return myNumber;
    }
}
所以不,接口没有构造函数。希望这有帮助

编辑:创建对象时,调用构造函数:

MyNumber number = new MyNumber(5); //Calls the constructor and creates a new MyNumber with the value of 5.
number.addNumber(6); //Adds 6 to your number, it is now 11.
number.subtractNumber(3); //Subracts 3 from your number, it is now 8.
number.getNumber(); //returns the value of myNumber inside of your MyNumber object, which is 8.

编辑2:我想详细介绍一下接口。你说得对,他们没有任何初始化属性。他们有方法来实现。如果在界面中有一个“移动”方法,它可以应用于许多不同的事情。汽车、狗、船、飞机、树懒和蛇都会移动,但它们是如何移动的呢?汽车比树懒跑得快,所以它的运动方式不同。当您为需要移动的任何对象创建类时,您可以更改该移动方法并根据需要对其进行调整。这就是界面的要点,灵活性。

你不知道这一点。你这么想,你错了。因此,您的问题的其余部分基于一个错误的前提。@EJP所以接口不作为虚拟机的类处理?您不明白“您错了”的哪一部分?接口被虚拟机当作接口处理。@EJP我在Java官方网站上读到,接口是类的一个实例,所以它们是。从那句话到你认为它们必须有构造函数,甚至到你“知道”它们是“由虚拟机作为抽象类处理”的结论,还有很长的路要走。@LoganKulinski你的评论与这个答案的相关性让我难以理解。方法不需要初始化。哎哟,感谢您指出:)将其更改为已实现!我不认为在你的最后一段中除了“初始化属性”之外还有什么有用的东西。这只会造成混乱。