【问题标题】:Calling a static method on an abstract class outside the main method [duplicate]在主方法之外的抽象类上调用静态方法[重复]
【发布时间】:2017-05-19 03:05:52
【问题描述】:

这个程序可以正常运行

public class Test{
static int DAY_IM = 1000*60*60*24;

public static void main(String[] args) {

    Calendar c = Calendar.getInstance();
    c.set(2004,0,7,15,40);
    long day1 = c.getTimeInMillis();

    for (int i  =0; i < 15 ; i++) {

        day1 += (DAY_IM *29.52);
        c.setTimeInMillis(day1);

        out.println(String.format("full moon on %tc ",c));
    }

}

我想知道为什么当我移动这条线时

 Calendar c = Calendar.getInstance();

在main方法之外,然后在类内部使用引用c我找不到Calendar类的任何方法

我知道 Calendar 类是抽象的,它返回一个子类的实例以分配给引用,但为什么我不能使用引用来访问主方法之外的方法?

【问题讨论】:

  • 为什么要将它移到 main 方法之外?还有其他几种您没有显示的 Test 类方法吗?
  • 对于未来的问题:包括有问题的代码,而不仅仅是“工作代码”,并发布实际的编译器错误或运行时异常。

标签: java main-method


【解决方案1】:

当您将 Calendar c = Calendar.getInstance(); 移到主函数之外时,您将在 Test 类中创建 NON 静态变量

要在静态方法main 中使用此变量,您需要编写如下内容:

new Test().c.METHOD_NAME

另一种选择是将static添加到变量声明中,然后您就可以直接在main中使用它

【讨论】:

  • 好的,但是当我移动这条线时,我还使用了 main 方法之外的引用,所以这里有什么问题?
  • @Muhammad 你如何使用它?
  • 日历 c = Calendar.getInstance(); c.set(2004,0,7,15,40);想象一下没有其他代码,当我使用 c 时,我只想使用这两行但在 main 方法之外。作为参考,我一无所获
  • @Muhammad 代码必须在某个函数/方法中,只允许变量初始化
猜你喜欢
  • 2012-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 2016-06-20
  • 2023-03-16
相关资源
最近更新 更多