开发者社区> 问答> 正文

为什么对于以下方法,我们需要访问修饰符“静态”?

这是我从Herbert Schildt的书“ Java:完整参考”(第239页,第240页)中以PDF格式获得的代码。我已经研究了“静态”,但是在这种情况下,我想知道为什么必须使用静态。

import java.util.Random;

interface SharedConstants { int NO = 0; int YES = 1; int LATER = 3; int SOON = 4; int NEVER = 5; }

class Question implements SharedConstants { Random rand = new Random();

int ask() {
    int prob = (int) (100 * rand.nextDouble());
    if(prob < 30) return NO;
    else if(prob < 60) return YES;
    else if(prob < 75) return LATER;
    else if(prob < 98) return SOON;
    else return NEVER;
}

}

public class AskMe implements SharedConstants { static void answer(int result) { switch(result) { case NO: System.out.println("No"); break; case YES: System.out.println("Yes"); break; case LATER: System.out.println("Later"); break; case SOON: System.out.println("Soon"); break; case NEVER: System.out.println("Never"); break; } }

public static void main(String[] args) {
    Question q = new Question();
    answer(q.ask());
    answer(q.ask());
    answer(q.ask());
    answer(q.ask());
}

}

我不知道answer在类中创建方法的那一行AskMe。为什么我们需要“静态”访问控制?如果不是,则编译器将给出类似“错误:无法从静态上下文引用非静态方法answer(int)”的错误。

提前致谢。

(这是我第一次问问题,如果有任何错误,请告诉我)


问题来源:stackoverflow

展开
收起
七天一失眠 2020-04-09 11:19:41 1555 0
2 条回答
写回答
取消 提交回答
  • 有点尴尬唉 你要寻找的东西已经被吃掉啦!

    类的方法在使用时,必须实例化类;而静态方法不需要依赖于类的实例化。Python 可以直接使用静态方法,而避免了去实例化一个对象。实例化对象需要消耗资源的,静态方法避免了这一切。

    2020-04-09 19:49:00
    赞同 展开评论 打赏
  • 做一个优秀的阿里云志愿者

    你能,但没有static你需要的实例AskMe调用answer在main。 void answer(int result) { switch(result) { case NO: System.out.println("No"); break; case YES: System.out.println("Yes"); break; case LATER: System.out.println("Later"); break; case SOON: System.out.println("Soon"); break; case NEVER: System.out.println("Never"); break; } }

    public static void main(String[] args) { Question q = new Question(); AskMe askMe = new AskMe(); askMe.answer(q.ask()); askMe.answer(q.ask()); askMe.answer(q.ask()); askMe.answer(q.ask()); }


    答案来源:stackoverflow

    2020-04-09 11:19:57
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载