为什么我对非静态字符串变量的访问不起作用

时间:2017-06-07 09:15:57

标签: java

为什么我对非静态字符串变量的访问不起作用。尝试这样做,我的IDE已经找到它但是当我运行它时显示“找不到符号” 请帮帮我,谢谢。

public class Main
{
    public static void main(String[] args)
    {
        testWrong obj = new testWrong();
        System.out.println(obj.public_non_static()); //Doesn't Work


    }

}



public class testWrong
{
    public String public_non_static = "It is Public non Static";

    public void in_non_static_method()
    {
        testWrong obj1 = new testWrong();
        obj1.public_non_static();   //Doesn't Work

    }

    public static void in_static_method()
    {
        testWrong obj2 = new testWrong();
        obj2.public_non_static(); //Doesn't Work also
    }
}

2 个答案:

答案 0 :(得分:2)

您有一个名为Session变量,但您尝试使用该名称访问方法,该名称在Java中不起作用。

另一方面,

你不应该习惯直接访问其他类中的变量,因为它违反了最重要的OO原则信息隐藏/封装

getter / setter 方法也是如此,这些方法只应用于愚蠢的数据传输对象(DTO)或值对象。没有(商业)逻辑。

答案 1 :(得分:0)

您正在访问方法:public_non_static();

请改用:obj2.public_non_static;

既然你对OOP很陌生,那么最好不要使用公共关键字,你应该将它们设为私有,并为它们制作getter和setter。