java中的类和方法

时间:2012-11-12 21:31:02

标签: java eclipse javabeans

当我想要尝试让我的工作不是从一个方法而是从一个类来完成时,我只是在玩java。看看我做了什么。

import javax.swing.*;

class foolingAround{
    public static void main(String ARG[]) {
        createMyInterface();
    }

    private static void createMyInterface(){
        JFrame f = new JFrame("Frame from Swing but not from other class");
        f.setSize(100,100);
        f.setVisible(true);
        new createAnotherInterface();
    }

}

class createAnotherInterface{
    public static void main(String arg[]){
        giveMe();
    }

    static JFrame giveMe(){
        JFrame p = new JFrame("Frame from Swing and from another class");
        p.setSize(100,100);
        p.setVisible(true);
        return p;
    }
}

编译时未显示任何错误,但class createAnotherInterface的框架未显示。为什么?我何时制作不同的课而不是方法?

7 个答案:

答案 0 :(得分:1)

实例化第二个类不会调用它的“main”方法 - 你必须从第一个类中显式调用giveMe()方法:

private static void createMyInterface(){
        JFrame f = new JFrame("Frame from Swing but not from other class");
        f.setSize(100,100);
        f.setVisible(true);
        new createAnotherInterface().giveMe();
    }

“main”函数称为“入口点”,它是JVM在“启动”java应用程序时跳转到的函数。由于在不同的类中可以有多个main,因此在从命令行启动时必须指定“which class”

答案 1 :(得分:1)

使用new createAnotherInterface();,您只能创建一个新对象,而不是启动giveMe()main

有多种方法可以“愚弄”来解决您的问题,可能最容易改变:

new createAnotherInterface();

createAnotherInterface.giveMe();

另请注意,createAnotherInterface不是界面,一旦完成“foolingAround”阶段,您应该关注Code Conventions for the Java Programming Language

答案 2 :(得分:1)

你的createAnotherInterface类不应该有一个main方法,如果有的话,它不会被调用。它应该有一个构造函数,或者你应该使用你对该类实例的引用来调用giveMe()方法。

答案 3 :(得分:1)

 new createAnotherInterface();

只会调用createAnotherInterface的默认构造函数。

您必须从giveMe()班级明确致电foolingAround

private static void createMyInterface(){
    JFrame f = new JFrame("Frame from Swing but not from other class");
    f.setSize(100,100);
    f.setVisible(true);
    createAnotherInterface.giveMe();
}

或为CreateAnotherInterface编写构造函数。

    class createAnotherInterface{
    public createAnotherInterface(){
    giveMe();
    }
    public class FoolingAround {
    private static void createMyInterface(){
        JFrame f = new JFrame("Frame from Swing but not from other class");
        f.setSize(100,100);
        f.setVisible(true);
        new createAnotherInterface();
    }
}

答案 4 :(得分:0)

事实上,我已经复制了你的代码并进行了测试。文件名为createAnotherInterface.java

它有效,JFrame出来。

答案 5 :(得分:0)

您已将方法命名为giveMe,请考虑重构为构造函数createAnotherInterface,或者只创建一个启动该方法的构造函数。

答案 6 :(得分:0)

您只是为createAnotherInterface类创建一个新Object,默认情况下它调用默认构造函数,并且在默认构造函数中没有调用giveMe()方法。

我不确定我是对还是错,但我要求你在“createAnotherInterface”类中创建一个构造函数,并在constuctor中调用“giveMe()”方法。我希望这能解决你的问题。

或至少打电话

new createAnotherInterface().giveMe();

在你的createMyInterface()类