简体   繁体   English

Java重载构造函数和方法

[英]Overloading Constructors & Methods in Java

My homework involves a writing a GUI. 我的作业包括编写GUI。 I am not looking for someone to do my homework for me, but I am only trying to help get a better understanding for it. 我并不是要找人为我做家庭作业,但我只是想帮助他们更好地理解它。 We are going to code the following classes: Since we need separate classes and separate driver programs to test the classes, I am going to divide up the work. 我们将编写以下类的代码:由于我们需要单独的类和单独的驱动程序来测试这些类,因此我将分工。 Use the MATH class as needed. 根据需要使用MATH类。 Be sure to use the float or double primitive data type as well. 确保也使用float或double原语数据类型。 Additional students are to have a default constructor (set the default values to 2.0f or 2.0 for a double), as well as overloaded methods to accept the data s either floats or doubles. 其他学生将拥有一个默认构造函数(将默认值设置为2.0f或double设置为2.0),以及重载方法以接受float或double的数据。

Additionally, students are to use Graphical User Interface programming techniques as the interface to the classes. 此外,学生将使用图形用户界面编程技术作为课程的界面。 Students can use labels, buttons, radio buttons, menus as well as sliders. 学生可以使用标签,按钮,单选按钮,菜单以及滑块。

Square Class (Perimeter and Area) 方类(周长和面积)

Mainly what I need help with: 我主要需要帮助的是:

Where should the constructors go? 建设者应该去哪里? How would I implement them to be overloaded in this code? 我将如何实现它们以在代码中重载? How could I overload methods in this code? 如何在此代码中重载方法?

    import javax.swing.*;
    import java.awt.event.*; // Needed for ActionListener Interface

    /**
     * The BugayTestSquare 3 class displays a JFrame that lets the user enter in the
     * sides of the of a square. When the calculate button is pressed, a dialog box
     * will be displayed with the area and perimeter shown. 
     */

    public class FirstGUI extends JFrame
    {
        /*
         * Acording to good class design princples, the fields are private.
         */
        private JPanel panel;
        private JLabel messageLabel, messageLabel2;
        private JTextField lengthTextField;
        private JButton calcButton;
        private final int WINDOW_WIDTH = 310;
        private final int WINDOW_HEIGHT = 150;

        /**
         * Constructor
     */

    public FirstGUI()
    {
        // Set the window title
        setTitle("Area and Perimiter Calculator");

        // Set the size of the window.
        setSize(WINDOW_WIDTH, WINDOW_HEIGHT);

        // Specify what happens when the close button is clicked.
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // Build the panel and add it to the frame.
        buildPanel();

        // Add the panel to the frames content pane.
        add(panel);

        //diplay the window.
        setVisible(true);
    }

    /** The buildPanel method adds a label, 
     * text field, and a button to a panel.
     **/

    private void buildPanel()
    {
        // Create a label to display instructions.
        messageLabel = new JLabel("Please enter in the length " +
                                  "of the square.");

        messageLabel2 = new JLabel("Please enter in the width " +
                                 "of the square.");

        // Create a text field 10 characters wide.
        lengthTextField = new JTextField(10);

        //Create a button with the caption "Calculate."
        calcButton = new JButton("Calculate");

        // Add an action listener to the button.

        calcButton.addActionListener(new FirstGUI.CalcButtonListener());

        //Create a JPanel object and let the
        // panel field reference it.
        panel =new JPanel();

        // Add the label, text field, and button.
        // components to the panel.

        panel.add(messageLabel);
        panel.add(messageLabel2);
        panel.add(lengthTextField);
        panel.add(calcButton);
    }

    /**
     * CalcButtonListener is an action listener 
     * class for the Calculate button.
     */

    private class CalcButtonListener implements ActionListener
    {
        /**
         * The actionPerformed method executes when the user
         * clicks on the Calculate Button.
         * @param e The Event Object.
         */

        public void actionPerformed(ActionEvent e)
        {
            String input; // To hold the user's input
            double area; // The area
            double perimeter; // the perimter

            // Get the text entered by the user into the
            // text field

            input = lengthTextField.getText();

            //Perform Calculations
            area = Double.parseDouble(input)*2; 
            perimeter = Double.parseDouble(input)*4;

            //Display the result.

            JOptionPane.showMessageDialog(null, "Your area is " +area +
                "\nYour perimter is " + perimeter);

        }
    }
}

This should help: 这应该有助于:

public class FirstGUI extends JFrame
    {

    public FirstGUI {

        // Constructers go here

     }

}

As for overloading. 至于超载。 Picture it like this, you have a debit card, it can be used as a debit card, or a credit card. 像这样想象,您有一个借记卡,它可以用作借记卡或信用卡。 It has two uses. 它有两个用途。 You can create two methods with the same name, but have different meanings. 您可以创建两个名称相同但含义不同的方法。

Example: 例:

public void functionOne(int num1, int num1) {

// do some stuff

}

public void functionOne(int num1, int num1, String str) {

// do some stuff but has different input

}

public void functionOne(int num1) {

// do some stuff but has different input

}

You can make a call to the method as either: 您可以通过以下任一方式调用该方法:

functionOne(1, 2);

functionOne(1, 2, "hello world");

public void functionOne(59);

And all of the calls will be to a method that has the same name, but with different input. 并且所有调用将针对名称相同但输入不同的方法。 All calls would be correct. 所有电话都是正确的。 You can now call functionOne overloaded. 现在,您可以调用functionOne重载了。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM