从Java中的其他类访问私有变量

我希望我说的是我的话。我有这样的课:

public class MainClass extends JFrame{

private JLabel mainlabel;

private SampleClass sample=new SampleCalss();

public void intital(){

mainlabel=new JLabel("Main");

sample.setMethod(getLabel());

//

//some code

//

add(mainlabel);

}

public static void main(){

intital();

}

public JLabel getLabel(){

return mainlabel;

}

}

和其他这样的类:

public class SampleClass extends JFrame{

private JButton button=new JButton("Change");

private JLabel sLabel;

public SampleClass(){

//somecode

//

button.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

sLabel.setText("Sample text set");

}

});

add(jButton);

}

public void setMethod(JLabbel l){

sLabel=l;

}

}

这是mainlabel从其他类(在该示例代码中SampleClass)访问和更改其值的正确方法吗,是否有更好或更合适的解决方案?请注意,这MainClass是具有main方法的类。

回答:

从另一个类访问私有变量的正确方法是使用getter和setter方法。否则,您应该将该变量公开。

那是:

// getter

public JLabel getMainLabel() {

return mainlabel;

}

// setter

public void setMainLabel(JLabel mainLabel) {

this.mainlabel = mainLabel;

}

但是,直接返回私有数据是一种不好的做法-

允许外部代码修改您的私有状态。通常,您应该返回私有数据的副本,以使外部代码不会干扰类的内部。但是,如果您需要外部代码来调用私有数据上的方法,那么您可能应该在类中提供操作方法,而不是直接公开私有数据。

您可能 真的

想在主类中创建像setText()和方法getText(),然后在上调用setText()getText()方法mainlabel。但是,您需要注意这一点,因为您可能倾向于复制JLabel类中定义的每个方法。这将使您的类及其使用者与JLabel实现紧密结合。如果您JLabel将来选择用其他产品代替,则需要花费大量工作才能平开已创建的联轴器。

以上是 从Java中的其他类访问私有变量 的全部内容, 来源链接: utcz.com/qa/408883.html

回到顶部