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

时间:2016-11-25 22:54:12

标签: java oop interface

我知道Java中的接口由虚拟机作为抽象类处理。因此,Java中的每个类,抽象与否都有一个构造函数。这是否意味着接口也有构造函数?因为一方面我也有理由拥有一个构造函数,因为它们是抽象类。另一方面,它没有意义,因为接口没有任何初始化属性。 那它是如何实际运作的?

2 个答案:

答案 0 :(得分:4)

接口没有构造函数。他们的实现做。

答案 1 :(得分:1)

所有界面都是:

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:我想详细说明接口。你说他们没有任何启动属性是正确的。他们有实施的方法。如果您的界面中有“移动”方法,它可以应用于许多不同的东西。汽车,狗,船,飞机,树懒和蛇都在移动,但它们如何移动?汽车比树懒移动得更快,所以它的移动速度不同。当您为需要移动的任何内容创建类时,您可以更改该移动方法并根据您需要的情况进行定制。这就是界面的重点,灵活性。