2

我是编程新手,所以我只是尝试一些简单的程序...

  public class simple {
        public static void main(String[] args) {        
        A ob=new A(10,20);
        System.out.println("values of a and b are "+ob.a+" "+ob.b);
        }                                                    ^
    }                                                        ^


public class A {
    int a;
    private int b;
    A(){}
    A(int c,int d)
    {
        a=c;
        b=d;
    }
}

显示的错误是field ob.b not visible..我正在使用eclipse,需要知道上面的代码有什么问题..

谢谢!

4

3 回答 3

9

如果您注意到变量b被声明为私有,这将不允许简单类直接访问它。相反,您可以通过getb()之类的方法访问它

public class A {
    int a;
    private int b;
    A(){}
    A(int c,int d)
    {
        a=c;
        b=d;
    }   
    int getb()
    {
        return b;
    }
}

现在你可以重写打印语句如下,

System.out.println("values of a and b are "+ob.a+" "+ob.getb());
于 2013-10-13T11:15:11.623 回答
1

对象b已被声明为private,这意味着您不能从不同的类访问它。
在这种情况下,您有两种选择,第一种是将 a 和 b 声明为公共变量,这被认为是一种不良的编程习惯,因为它破坏了封装。

或者,您可以将getter方法引入class A如下:

public int getA(){
    return a;
}

public int getB(){
    return b;
}
于 2013-10-13T11:17:57.340 回答
0
public class simple {
        public static void main(String[] args) {        
        A ob=new A(10,20);
        System.out.println("values of a and b are "+ob.a+" "+ob.b);
        }
    }


public class A {
    int a;
    int b;
    A(){}
    A(int c,int d)
    {
        a=c;
        b=d;
    }
}

这现在可以工作了。删除私有访问说明符。

于 2013-10-13T11:17:35.583 回答