接口在Java中有构造函数吗?
我知道Java中的接口由虚拟机作为抽象类处理。因此,Java中的每个类,不管是抽象类还是非抽象类,都有一个构造函数。这是否意味着接口也有构造函数?一方面,由于构造函数是抽象类,所以有一个构造函数是有意义的。另一方面,它没有意义,因为接口没有任何要初始化的属性。接口在Java中有构造函数吗?,java,oop,interface,Java,Oop,Interface,我知道Java中的接口由虚拟机作为抽象类处理。因此,Java中的每个类,不管是抽象类还是非抽象类,都有一个构造函数。这是否意味着接口也有构造函数?一方面,由于构造函数是抽象类,所以有一个构造函数是有意义的。另一方面,它没有意义,因为接口没有任何要初始化的属性。 那么它实际上是如何工作的呢?接口没有构造函数。它们的实现是这样的。所有接口都是: interface MyInterface{ void addNumber(int amount); void subtractNumber
那么它实际上是如何工作的呢?接口没有构造函数。它们的实现是这样的。所有接口都是:
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你的评论与这个答案的相关性让我难以理解。方法不需要初始化。哎哟,感谢您指出:)将其更改为已实现!我不认为在你的最后一段中除了“初始化属性”之外还有什么有用的东西。这只会造成混乱。