2 回答
TA贡献1842条经验 获得超21个赞
这是一个很好的问题,它展示了“静态”关键字的魔力。
您的程序可以通过三种方式执行:
第一种方式:当类 FixCapacityStackOfString 是嵌套类时。
class ClassName
{
public static void main(String[] args) {
ClassName obj = new ClassName();
FixCapacityStackOfString fcstack = obj.new FixCapacityStackOfString(100);
}
class FixCapacityStackOfString {
public FixCapacityStackOfString(int a) {
list = new String[a];
}
private int size;
private String[] list;
}
}
在这种情况下,调用非静态方法的构造函数需要定义它的类的实例。由于您是从静态方法 main 调用的,因此这就是您必须调用的方式。
第二种方式:如果你的类 FixCapacityStackOfString 在主类之外
class ClassName
{
public static void main(String[] args) {
FixCapacityStackOfString fcstack = new FixCapacityStackOfString(100);
}
}
class FixCapacityStackOfString {
public FixCapacityStackOfString(int a) {
list = new String[a];
}
private int size;
private String[] list;
}
第三种方式:在第一类中将类 FixCapacityStackOfString 声明为静态。
class ClassName
{
public static void main(String[] args) {
FixCapacityStackOfString fcstack = new FixCapacityStackOfString(100);
}
static class FixCapacityStackOfString {
public FixCapacityStackOfString(int a) {
list = new String[a];
}
private int size;
private String[] list;
}
}
TA贡献1820条经验 获得超2个赞
您的代码如下所示:
class TestStack1 {
public static void main(String[] args) { ... }
class FixCapacityStackOfString { ... }
}
而你FixCapacityStackOfString在main. 但FixCapacityStackOfString它不是一个静态类:它需要一个TestStack1. 您在静态 main 方法中没有此实例。所以只需声明FixCapacityStackOfString为静态:
static class FixCapacityStackOfString { ... }
添加回答
举报