可能重复:
为什么构造函数不返回值
为什么构造函数不具有返回类型,甚至无效?这是什么原因?
$ cat Const.java
public class Const {
String Const(String hello) {
return hello;
}
public static void main(String[] args) {
System.out.println(new Const("Hello!"));
}
}
$ javac Const.java
Const.java:7: cannot find symbol
symbol : constructor Const(java.lang.String)
location: class Const
System.out.println(new Const("Hello!"));
^
1 error
Run Code Online (Sandbox Code Playgroud) 当我向这个ArrayList添加一个对象时,我的resize方法给了我一个NullPointerException.列表初始化为1,第一个元素添加到数组中的0位.
这是我的arrayList AKA DynamicArray
//Implementation of a dynamic array
// Add remove methods
public class DynamicArray {
private Object[] data;
private int size;
public void DynamicArray(){
data = new Object[1];
size = 0;
}
public int size(){return size;}
public Object get(int index){return data[index];};
private void resizeIfFull()
{
if (size < data.length){
return;
} else {
Object[] bigger = new Object[2 * data.length];
for (int i = 0; i < data.length; i++){
bigger[i] = data[i];
data = bigger;
}
}
} …Run Code Online (Sandbox Code Playgroud) 我有一个MousableActor扩展具体类的抽象类Actor:
public abstract class MousableActor extends Actor
{
/**
* Constructs a MousableActor.
*/
protected void MousableActor()
{
}
}
Run Code Online (Sandbox Code Playgroud)
当我查看为该类生成的javadoc时,我看到一个公共的无参数构造函数:

根据JLS第8.8.9节:
如果类不包含构造函数声明,则隐式声明没有形式参数且没有throws子句的默认构造函数.
我一直认为这是一个if-and-only-if.为什么即使我显式声明了受保护的构造函数,也会创建公共默认构造函数?它是否与具有公共no-args构造函数的超类有关?
我在Java 1.8.0之上使用Greenfoot版本2.4.2(这应该不重要).
我有两个班,Game和ScoreBoard.我希望在创建Game实例时自动生成ScoreBoard实例.
ScoreBoard构造函数如下所示:
public void ScoreBoard(String player1, String player2)
{
p1Name = player1;
p2Name = player2;
p1Score = 0;
p2Score = 0;
}
Run Code Online (Sandbox Code Playgroud)
并且Game类的构造函数如下所示:
public Game()
{
//irrelevant code redacted
ScoreBoard scores = new ScoreBoard(p1, p2);
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译时,我收到以下消息:
找不到符号 - 构造函数ScoreBoard(java.lang.String,java.lang.String)
这是我设置的基本课程,用于计算股票收益.关注这里的"股票"构造函数:
public class Stock{
private String symbol;
private int totalShares;
private double totalCost;
public void Stock(String symbol){
this.symbol = symbol;
totalShares = 0;
totalCost = 0.0;
}
public double getProfit(double currentPrice){
double marketValue = totalShares * currentPrice;
return marketValue - totalCost;
}
public void purchase(int shares, double pricePerShare){
totalShares += shares;
totalCost += shares*pricePerShare;
}
public int getTotalShares(){
return totalShares;
}
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个名为DividendStock的子类,它应该计算股息收益.
public class DividendStock extends Stock{
private double dividends;
public DividendStock(String symbol){
super(symbol);
dividends = 0.0;
}
public …Run Code Online (Sandbox Code Playgroud)