无法从主方法访问实例变量,但可以从其他方法完成

时间:2017-04-07 00:50:11

标签: java static main

//编辑:我想我的问题代表错了。我熟悉“我们需要一个实例来访问非静态变量和方法”的概念。

但我的问题是

当我在我的日食中键入prgm时,它在B行显示错误,但我希望甚至在A //上显示

这是一个基本问题,请不要介意。

       package com.sigma.java;
        import java.util.*;

        public class Test1 {

        private int a=1;
        public void add(){
         System.out.println(a);-------->A
          }

        public static void main(String[] args) {
        Test1 t=new Test1();
        System.out.println(a);-------------->B
          }
        } 

编译器在尝试打印时显示主方法错误(标记为B) (错误 - 无法对非静态字段进行静态引用问题 - 为什么我在add()方法中没有得到相同的错误(标记为A)

3 个答案:

答案 0 :(得分:0)

变量a必须声明为静态,如下:

private static int a = 1 ;

您不能在静态Java方法中使用实例变量。

答案 1 :(得分:0)

您的主要方法应该是:

因为,a是一个实例变量,您需要在静态方法中使用实例t

public static void main(String[] args) {
   Test1 t=new Test1();
   System.out.println(t.a);
}

add方法中,它是可访问的,因为它是成员方法,其中所有成员变量都可以被访问目录。因此,它是有效的,没有错误。

答案 2 :(得分:0)

如果您有权访问类Test1的实例,则只能调用add方法。 Test1类的每个实例都有一个变量a。

的副本

但是,您尝试直接/静态地从main方法访问字符串a的值。这是有问题的,因为来自main方法的调用不是来自Test1的实例。要记住的关键点是实例变量a绑定了类Test1的每个实例