jem*_*990 2 java parameters class
我正在为一个类开发一个非常简单的文本RPG类型的游戏.我觉得我一切都很好,但是当我运行以下类时,我遇到编译器错误.
这是我的"房间"课程:
import java.io.*;
import java.util.*;
public class Room {
public static int size;
public static void Room(int n) {
size = n;
}
public static void showSize() {
System.out.println(size);
}
}
Run Code Online (Sandbox Code Playgroud)
这是调用它的类:
import java.io.*;
import java.util.*;
public class Dungeon {
public static void main(String [] args) {
int mySize = 10;
Room a = new Room(mySize);
a.showSize();
}
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是,如果我在Room()构造函数中没有任何参数的情况下运行它,那很好,但是当我尝试传入一个大小(在变量中或使用int显式)时,我得到:
Dungeon.java:8: cannot find symbol
symbol : constructor Room(int)
location: class Room
Room a = new Room(mySize);
^
1 error
Run Code Online (Sandbox Code Playgroud)
public static void Room(int n){
size = n;
}
Run Code Online (Sandbox Code Playgroud)
不是构造函数,它是静态方法.所以,当你尝试
Room a = new Room(mySize);
Run Code Online (Sandbox Code Playgroud)
Java使用参数查找构造函数并显示编译时错误.
将其更改为:
public Room(int n){
size = n;
}
Run Code Online (Sandbox Code Playgroud)
了解更多关于构造函数在这里.
您正在尝试调用Room构造函数,但您尚未定义任何构造函数.你有这个:
public static void Room(int n){
size = n;
}
Run Code Online (Sandbox Code Playgroud)
...但这只是一个静态void方法,而不是构造函数 - 它设置了一个静态字段.我怀疑你真的希望你的Room课看起来像这样:
public class Room {
private final int size;
public Room(int size) {
this.size = size;
}
public void showSize() {
System.out.println(size);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我已经制作了size两个private和final.如果你真的希望你的房间能够在施工后改变尺寸,那么你可以移除它final,但我强烈建议你保留田地private.
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |