Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用多个类而不创建每个类的对象_Java - Fatal编程技术网

Java 使用多个类而不创建每个类的对象

Java 使用多个类而不创建每个类的对象,java,Java,我不熟悉java和stackoverflow 我有 class Assemble() class Start() class Ignite() class Move() ...... There are still 12 classes 我想在这些类中使用方法 但是 我不应该创建它们的对象 我也不能将extends用于所有这些 我知道有什么办法吗? 请揭露任何愚蠢的事情,我不明白。 这是我听到的第一个问题 最后一节课是 class run {

我不熟悉java和stackoverflow

我有

    class Assemble()
    class Start()
    class Ignite()
    class Move()

...... There are still 12 classes 
我想在这些类中使用方法 但是

  • 我不应该创建它们的对象
  • 我也不能将extends用于所有这些
我知道有什么办法吗? 请揭露任何愚蠢的事情,我不明白。 这是我听到的第一个问题

最后一节课是

 class run
    {
    public void run_simple()
    {                  
// hear i should be able to access all methods of above class
    }
    }

如果你按照它的意思使用面向对象语言(如java),那么你的整个程序就是关于创建和使用对象的(正如许多评论中提到的)不创建对象和使用静态方法有一些有效的技术原因(就是其中之一)。有些环境禁止使用继承

请说明这些原因,否则我们必须假设您不了解面向对象语言的一些基本概念,必须忽略您的“限制”

面向对象编程的大多数“限制”旨在帮助您构建解决方案/程序。如果您将它们视为真正的限制,那么程序的结构可能非常糟糕

我想给出一个示例,说明类似的东西看起来可能是“面向对象的方式”。这可能与您的项目不完全匹配,但应该向您表明,创建对象不能是程序员努力的问题

首先,我们需要一个接口来定义一个动作(我称之为类)的外观

interface Action {
  public void run();
}
下面的类定义了具体的操作。它们的构造函数可能会使用参数来配置如何执行它们的详细信息。在每个类的
run()

class Assemble implements Action {
  public void run() {...}
}
class Start implements Action {...} 
class Ignite implements Action {...} 
class Move implements Action {...}
控制器执行“运行一切”。这基本上就是你创建对象的“开销”

class Controller {

  /** Returns a list of the configured action objects. */
  public static List<Action> buildActions() {
    List<Action> actions = new LinkedList<Action>();
    actions.add(new Assemble(parameter));  // or whathever parameters you need
    actions.add(new Start(parameter1, parameter2));
    actions.add(new Ignite());
    actions.add(new Move());
  }

  /** Build the list of actions and run one after the other. */
  public static void main(String[] args) {
    List<Action> actions = buildActions();
    for (Action action: actions) {
      action.run();
      // here you could add logging, profiling etc. per Action.
    }
  }
}
类控制器{
/**返回已配置操作对象的列表*/
公共静态列表buildActions(){
列表操作=新建LinkedList();
actions.add(newassemble(parameter));//或您需要的任何参数
添加(新开始(参数1,参数2));
添加(新的Ignite());
添加(新移动());
}
/**构建操作列表并逐个运行*/
公共静态void main(字符串[]args){
List actions=buildActions();
for(操作:操作){
action.run();
//在这里,您可以为每个操作添加日志记录、分析等。
}
}
}

如果类有
静态
方法,那么您可以在不创建对象的情况下调用它们。“我不应该创建它们的对象”为什么?Java是一种面向对象的编程语言。所以你应该使用对象。如果您觉得对象不是一个有用的概念,请使用其他编程语言!但是那样的话,我应该使用每一个带有类名的方法,你必须弄清楚一些概念:在你的文件中你写类。对象仅在运行时存在于计算机内存中。扩展是一个类从另一个类继承行为并添加更多行为或重新定义基类行为。那么,您的请求是在一个文件中包含多个类吗?创建对象会很乏味吗?但电脑的用途是做单调乏味的工作!您不会考虑实际编写代码来显式地实例化每个对象,比如SomeClass someObject1;SomeClass someObject2;。。。,你是吗?知道吗,你告诉我们你真正想要编程的是什么,我们会帮助你,而不是一些奇怪的元上下文。这种方式我没有尝试过。也许这会解决我的问题,谢谢。