public class Basics {

        Basics b = new Basics();



        int instanceVariable = 0;

        public void behavior() {
          System.out.println("Print Something");
        }

        b.behavior();   // Why this line, b.behavior doesn't work?

        public static void main(String[] args){
          Basics b = new Basics();   /* Why are we allowed to create an
                                          * object of same name again within
                                          * the same class */
          b.behavior(); // This line works
        }


}


在上面的类中,我能够创建object。但是我不能在任何类之外调用b.behavior,但是我可以在一个方法中做到这一点。为什么呢?有什么区别?

public class Basics1 extends Basics{

     Basics b = new Basics();
     Basics1 b1 = new Basics1();

     b = b1.instanceVariable;  // I don't see error in this line, but previous line shows //error.
     b1.instanceVariable // This line doesn't work


}


为什么b1.instanceVariable不起作用,instanceVariable是基类实例变量。

最佳答案

您需要了解一个类是“类型定义”,而不是代码块或语句序列。

您不能只在类型定义中编写任意语句。

即使这样,"b1.instanceVariable"也不是语句。 "b1.instanceVariable"在语句上下文中不表示任何内容。

07-24 09:27