【问题标题】:abstract constructor java抽象构造函数 java
【发布时间】:2012-11-29 10:19:55
【问题描述】:

如何从第二个和第三个获取子构造函数? 自从 公共摘要首先不起作用?

public abstract class First {

    public Point position;

    public First() {}  //how do i make this constructor like an abstract?
                      // so that it will go get Second constructor or Third
}

public class Second extends First {

    public Second (Point x) {
        position = x;
    }
}

public class Third extends First {

    public Third(Point x) {
        position = x;
    }
}

【问题讨论】:

标签: java inheritance constructor abstract


【解决方案1】:

Java 不允许您从抽象类中访问派生自抽象类的具体类的构造函数。但是,您可以从具体类调用超类(抽象类)构造函数。

public abstract class First{

    public Point position;

    public Plant(Point x) {
      this.position = x;
    }
}

public class Second extends First {

    public Second(Point x) {
        super(x);
    }
}

【讨论】:

  • 非常感谢,非常感谢您的努力。
  • @Bohn 希望它对一些人有所帮助,这个例子有帮助吗?您还有其他问题吗?
【解决方案2】:

在创建SecondThird 对象时,程序员必须使用为该类定义的构造函数之一。

First 构造函数将被隐式调用,如果你不使用super 显式调用它。无需将其抽象化,您可以将其留空或不定义它(Java 将假定没有参数且不执行任何操作的隐式默认构造函数)。

【讨论】:

  • 如果我想做一个新的 First(x,y);在“头等舱”的方法中,这可能吗?
  • 如果First 类是abstract,你不能创建它的任何实例(这就是abstract 的意思)。因此,无论参数是什么,您都无法执行new First()。如果你定义了一个非默认构造函数(带参数的构造函数)而不定义默认构造函数(不带参数),你将不得不从子类的构造函数中显式调用 super(x, y)。
猜你喜欢
  • 2015-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 2021-11-24
  • 1970-01-01
相关资源
最近更新 更多