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



//编辑:I猜猜我把问题说错了。我熟悉"我们需要一个实例来访问非静态变量和方法"的概念。

但我的问题是

当我在日食中键入 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
          }
        } 

编译器在尝试打印 a 时在 main 方法中显示错误(标记为 B((错误 - 无法对非静态字段 a进行静态引用(问题-为什么我在add((方法(标记为A(

变量a必须像波纹管一样声明为静态:

private static int a = 1 ;

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

您的主要方法应该是:

Becuause,a是一个实例变量,您需要像在静态方法中使用实例t一样使用实例变量。

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

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

仅当您有权访问类 Test1 的实例时,才能调用 add 方法。类 Test1 的每个实例都有一个变量 a 的副本。

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

相关内容

  • 没有找到相关文章

最新更新