需要了解公共和私人

时间:2013-03-25 10:06:58

标签: java private public

我已经粘贴了代码,现在我的查询是在名为“accesssp”的第一类中我添加了对象然后写了SOP然后为什么我不能输出作为B的值? b的访问是私有的,但我在同一类中获取价值

我做了BOLD部分,我不明白。

class accesssp  {

public int a=56;
private int b=5566;
public int c=58766;

System.out.println(b);

}

class accesssp1 extends accesssp{

public void accessd()   {

    System.out.println(a);
    System.out.println(c);

}

}
public class Access_Spf {

public static void main(String[] args) {


    accesssp1 sp1 = new accesssp1();
    sp1.accessd();
}

}

4 个答案:

答案 0 :(得分:1)

好吧,它的cuz system.out.println语句应该在方法/构造函数体内,就像你在第二和第三种情况下所做的那样。这是一个编译器错误。

class accesssp  {

public int a=56;
private int b=5566;
public int c=58766;

System.out.println(b);//should be inside a method/cons body

}

答案 1 :(得分:0)

System.out.println(b);既不在main()方法也不在任何函数中。这不能像你一样直接执行。另外,在b类中无法访问变量accesssp1

答案 2 :(得分:0)

SOP应该在任何方法内。使用构造函数并在构造函数中打印它,然后在 accesssp1

的构造函数中调用super()
class accesssp  {

public int a=56;
private int b=5566;
public int c=58766;

public accesssp()

{
System.out.println(b);
}

}

class accesssp1 extends accesssp{

public accesssp1()
{
super();
}


public void accessd()   {


System.out.println(a);
System.out.println(c);

}

}
public class Access_Spf {

public static void main(String[] args) {


accesssp1 sp1 = new accesssp1();
sp1.accessd();

}

}

答案 3 :(得分:0)

java中有访问说明符,有

private, public and protected.

上面的每一个都有特色,它们是根据范围和可见性来解释的。

private has scope & visibility resides only on inside a function or there the class.

例如:

public class classFirst
{
    private int variableName1;//scope and visibility inside this class
    public void function1()
    {
       private int variableName2;//scope and visibility inside this function not use outside.
    }
}

公众有范围&可见性驻留在项目的任何位置(当可以在外面调用只有它们的对象的调用时)。可以使用对象访问此值。

例如:

public class classSecond
{
    public int variableName1;//scope and visibility anywhere on the project
    public void function1()
    {
       public int variableName2;//scope and visibility anywhere on the project
    }
}

受保护的范围&可见性在类内部,也可以访问公共继承类。

所以System.out.println(b);语句必须在第一个类的构造函数中。