首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有“主”方法卡雷尔是怎么跑的?

没有“主”方法卡雷尔是怎么跑的?
EN

Stack Overflow用户
提问于 2014-07-26 22:18:14
回答 4查看 978关注 0票数 2

我对像机器人卡雷尔这样的程序感到好奇,因为它不使用main()方法。相反,它使用了run()方法:

代码语言:javascript
复制
import stanford.karel.Karel;

public class CollectNewspaperKarel extends Karel { 
  public void run() { 
    move(); 
  } 
}

它怎麽工作?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-07-26 22:24:25

实际的主要方法是在其他地方。例如,在KarelRunner类中。当java执行程序时,它实际上是在运行器类中执行main方法。从运行程序代码中调用您自己的run方法。

票数 6
EN

Stack Overflow用户

发布于 2014-07-27 01:59:45

"main“方法是每个java程序的起点。这个类所做的是,它本身不是一个java程序,而是在某种类型的框架内执行(在本例中,是卡洛机器人java实现),这个框架有一个“主”方法,而不是这个类,这个框架知道如何加载这个类并执行他的run方法。

这个“程序”是设计用来做一种特殊类型的程序的框架,我不知道这个“卡雷尔框架”,但是,例如,当你编写一个java web应用程序时,你写了一个"servlet“,但是你没有写一个”主“方法。有一些叫做“应用服务器”的程序,它们有一个"main“方法,并接受这个servlet类并执行以响应某些http消息。

票数 2
EN

Stack Overflow用户

发布于 2014-07-27 00:09:10

这没什么奇怪的。CollectNewspaperKarel类只是在扩展卡雷尔的行为。它不需要有一个main 方法.

将作为程序的入口点的类确实需要拥有一个main方法并创建一个CollectNewspaperKarel实例,例如:

代码语言:javascript
复制
public class MyProgram {

    public static void main(String[] args) {
        CollectNewspaperKarel cnpk = new CollectNewspaperKarel();
        cnpk.run();
    }
}

或者CollectNewspaperKarel的实例可以是一个静态字段:

代码语言:javascript
复制
public class MyProgram {
    private static CollectNewspaperKarel cnpk = new CollectNewspaperKarel();
    public static void main(String[] args) {
        cnpk.run();
    }
}

卡雷尔不是一个应用程序,而是一个API。你提出申请.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24976037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档