【问题标题】:Do interfaces have a constructor in Java?Java中的接口有构造函数吗?
【发布时间】:2017-04-10 08:05:24
【问题描述】:

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

【问题讨论】:

  • 你不知道。你认为,你错了。因此,您的问题的其余部分是基于错误的前提。
  • @EJP 所以接口不作为虚拟机的类处理?
  • “你错了”的哪一部分你不明白?接口由虚拟机作为接口处理。
  • @EJP 在Java官网上看到接口是Class的实例
  • 他们就是这样。从该陈述到您得出结论,即它们必须具有构造函数,甚至您“知道”它们“由虚拟机作为抽象类处理”,还有很长的路要走。

标签: java oop interface


【解决方案1】:

接口没有构造函数。他们的实现确实如此。

【讨论】:

  • @LoganKulinski 您的评论与此答案的相关性让我无法理解。
【解决方案2】:

所有的接口都是:

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

【讨论】:

  • 方法不需要初始化。
  • 哎呀,感谢您指出这一点 :) 将其更改为已实施!
  • 我认为您的最后一段中除了“初始化的属性”之外没有任何用处。它只会造成混乱。
猜你喜欢
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 2012-10-14
  • 2011-02-17
  • 1970-01-01
  • 1970-01-01
  • 2010-12-13
相关资源
最近更新 更多