刚开始学java,有个问题不太懂,书上说public修饰的变量所有类可见,那么如下代码编译的时候为什么会报找不到ageA?
agaA不是public修饰吗?类B和类Test应该都能引用它吧?class A 
{
public int ageA = 1;
}
class B
{
public int ageB;
public void print(){
System.out.println(this.ageB);
}
}
public class Test
{
public static void main(String[] args){
B b = new B();
b.ageB = ageA;
b.print();
}
}

解决方案 »

  1.   

    是所有类可见,问题是 agaA 你的声明是 public int ageA; 是类A的一个实例变量(对应的另一种是类变量 即 类似于public static int ageA; 有个static关键字修饰),既然是一个实例变量,你要访问它的前提要有个该类的对象(类变量不需要该类的对象)。代码应该是:public static void main(String[] args){
        B b = new B();
        A a = new A(); // 创建一个A的对象
        b.ageB = a.ageA;  // 用该类的对象访问
        b.print();
    }
    如果 是类变量 比如:class A {
        public static int ageA = 1; // 注意 static 修饰符
    }public class Test {
        public static void main(String[] args){
            B b = new B();
            b.ageB = A.ageA; // 用类名就可以
            b.print();
        }
    }
      

  2.   

    你的class也要public才能在别的类里看见
      

  3.   

    ageA这个变量时属于A的..最起码也要把A实例化然后点出来吧..偶是菜鸟..可能说法上有漏洞见谅..楼主加油..我也刚学..呵呵
      

  4.   

    要弄清public是修饰class,还是修饰成员变量
      

  5.   

    当你调用类中的所有东西时必须又对象来调用 就比如你的这个例子class A  
    {
    public int ageA = 1;
    }
    class B
    {
    public int ageB;
    public void print(){
    System.out.println(this.ageB);//这里调用ageB是this对象调用的
    }
    }
    public class Test
    {
    public static void main(String[] args){
    B b = new B();
    b.ageB = ageA;//这里用对象b调用ageB的
    b.print();//这里由对象b调用print()方法
    }
    }
    当然在某个类的内部调用这类里面的方法或变量时 方法的前面或变量的前面可以没有对象的引用 但是系统会自动的给你加上this来表示当前对象来调用 为了增加可读性最好写上this 不写也行
      

  6.   

    ageA是类A的公有成员变量,则ageA能在其他类里面直接“类名.公有成员变量名”的形式引用ageA ,即"A.ageA”,虽然是公有成员变量,但既然是一个类的成员,就必须要用类名或该类的对象去引用它,才能使用!
      

  7.   

    在b.ageB = ageA;  前面添一句 int ageA =1;