嘿我正在尝试从另一个类访问我在main方法中创建的对象,但是当我在另一个类中引用它时,它无法识别。经过一些研究后,我认为这与访问修饰符有关,但我尝试将该对象公开,仅用于显示“删除无效修饰符”的注释。有什么指针吗?
很抱歉这是如此基本,但我只是一个初学者而且我发现这些东西很难。
很抱歉没有提及!我是用Java写的。这就是我所拥有的:
public static void main(String[] args) {
Mainframe mainframe = new Mainframe();
mainframe.initialiseMF();
LoginPanel lp = new LoginPanel();
mainframe.add(lp);
}
public class Mainframe extends JFrame {
public Mainframe () {
// Set size of mainframe
setBounds(0, 0, 500, 500);
}
public void initialiseMF (){
// Get the size of the screen
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
// Determine the new location of the mainframe
int w = getSize().width;
int h = getSize().height;
int x = (dim.width-w)/2;
int y = (dim.height-h)/2;
// Move the mainframe
setLocation(x, y);
setVisible(true);
}
}
我正在尝试在另一个类中执行此语句:
Container content = mainframe.getContentPane();
答案 0 :(得分:0)
请记住,mainframe对象是main()方法的本地对象,它是静态的。你不能在课外访问它。
可能这会更清洁。
public class Mainframe extends JFrame{
public Mainframe(){
initialiseMF ();
}
public void initialiseMF (){
//do ur inits here
}
}
然后这样做,
public class TheOtherClass{
private Mainframe mainFrame;
public TheOtherClass(){
mainFrame = MainFrame.mainFrame; //although I would not suggest this, it will avoid the Main.mainFrame call
}
public void otherMethodFromOtherClass(JFrame mainFrame){
Container content = mainFrame.getConentPane();
}
}
答案 1 :(得分:0)
我不完全确定你对“对象”的意思,但我只是猜测你的意思是变量。
为了使类中声明的变量可以从外部访问(以某种方式,即直接或通过某种方法),它必须是成员变量而不是局部变量。
e.g。 local(方法 - 本地)变量:
//local variables are the ones that are declared inside a method
//their life and visibility is limited only within the block in which they are define.
public static void main(String[] args) { // args is also a local variable
String localVar = "Access modifiers are not allowed for local variables.";
//the reason that the access modifiers are not allowed is because
//the local variables are not members of the class
}
让班级成员private
,protected
,包私有或public
才有意义。
e.g。成员变量:
class AClass {
private String memberVar = "A member variable can have access modifier.";
//the access modifier will determine the visibility of that variable.
public String getMemberVar() {
return this.memberVar;
}
}
private:仅在班级内可见。您可以使用一些公共方法使其可访问。通常称为getter方法。
package-private:仅在包内可见。您可以再次使用一些公共方法在包外部访问它。
protected:仅在类及其子类中可见(即使子类在包外,也无关紧要)。
公众:随处可见。