这在 OOP Java 中是如何工作的



这段代码对我来说工作正常,但这是如何发生的?我是如何制作 4 个JMenu对象命名为同名的(菜单)的?即使它有效,我也需要了解,并且这段代码是编写代码的好方法还是更好?

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class Window extends JFrame {
    private static final String TITLE = "DevTools";
    private static final int WIDTH = 800;
    private static final int HEIGHT = 600;
    private JMenuBar menubar;
    private JMenu menu;
    private JMenuItem menuitem;
    private String[] menu_titles = {"File", "Edit", "Diagrams", "Help"};
    public Window(){
        init();
        createMenu();
    }
    public void init(){
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setExtendedState(MAXIMIZED_BOTH);
        this.setResizable(true);
        this.setSize(WIDTH, HEIGHT);
        this.setLocationRelativeTo(null);
        this.setTitle(TITLE);
    }
    public void createMenu(){
        menubar = new JMenuBar();
        setJMenuBar(menubar);
        for(int j = 0; j < menu_titles.length; j++){
            menu = new JMenu(menu_titles[j]);
            menubar.add(menu);
        }
        this.setVisible(true);
    }
}

我是如何使 JMenu 的 4 个对象命名为相同的名称,即(菜单)

menu不是任何对象的名称。 menu 只是用于临时存储对每个新创建的JMenu实例的引用的变量。您可以为其分配任意数量的引用。它最终将只容纳其中最新的。

由于您创建的每个JMenu都添加到menubar JMenuBar 中,因此您最终会得到一个包含多个JMenu实例的菜单栏。

我是如何使 JMenu 的 4 个对象命名为相同的名称,即(菜单)

你没有。您使用了四次menu实例字段,每次都覆盖其先前的值。它只剩下引用您分配给它的最后一个JMenu

menu ,在该代码中,根本不应该是实例字段。它应该是 createMenu 中的局部变量(甚至在 createMenu 中的 for 循环内),因为一旦完成并且您已经将所有菜单添加到菜单栏,就不应该使用它createMenu

> JAVA有两个术语,实际上这两个术语之间存在很大差异。所以请不要混淆这两个术语是:----

  1. 引用变量。
  2. 实际对象。

    私有 JMenu 菜单;//这里菜单是一个引用变量而不是一个对象。

    menu = new JMenu(menu_titles[j]);//new 关键字负责创建对象。这个新的对象引用实际上是由menu引用的变量保存的。

现在是时候解释你实际上感到困惑的循环代码了

         for(int j = 0; j < menu_titles.length; j++){
            menu = new JMenu(menu_titles[j]); // at each iteration
              // new keyword is responsible to creating a different Object. 
             //and refers to menu reference variable actually.
            menubar.add(menu); //add new JMenu to menubar.
        }

解释 :- 在每次迭代中new关键字负责创建不同的Object。 并实际引用菜单引用变量。 menubar.add(menu);这部分代码,将新的menu对象成员添加到menubar

它只是认为有 3-4 个成员站成一排,将东西传递给下一个人,最后一个人将东西扔进beanbox. 每次迭代相同的事物都经过不同的人,但事物保持不变,只是参考发生了变化,该事物的最终位置是beanbox

这里beanbox菜单栏,可以容纳多个menu对象。 传递事物的人就像一个参考变量。

仔细阅读你会得到这个概念。谢谢。。:)

最新更新