内部 Class 和构造函数

Inner Class and Constructors

我想创建一个 class ,它将具有相同的内部,更具体地说是这样的:

class PassengerComponent extends PlaneComponent
{   
   PassengerComponent InnerPC ;
   int inner ; // checks if PassengerComponent has an inner class

passengerComponent 继承自:

class PlaneComponent
{
   String Description ;
}

问题是里面的class应该是随机填充的,也就是说 有时乘客组件会有内部组件,有时则没有! 我尝试这样做的方式如下:

        int random = (int )(Math.random() * 1 + 0 );
        if( random == 0)
        {
           PassengerComponent PC1 = new PassengerComponent("Passenger Component #1" , 0);    
        }
        else
        {
           PassengerComponent PC1 = new PassengerComponent("Passenger Component #1" , 1); 
        }

       PC1.ready_check(Sc, Cg);

而乘客构造函数如下:

    public PassengerComponent( String D , int i)
    {
      Description = D ;
      System.out.println( " PassengerComponent: " + Description + " Has Been Created ");
      switch (i) {
        case 0:
            InnerPC = new PassengerComponent( " Inner Passenger Component #1 " , 2 );
            inner = 1 ;
            break;
        case 1:
            inner = 0 ;
            break ;
        case 2:
            break;
        default:
            break;
       }
    }
  }

调用构造函数并且输出消息似乎没问题,但是当调用 PC1.ready_check 时,编译器找不到我创建的 PC1! (ready_check 任何想知道的人都没有问题)

抱歉问题很长,有什么想法吗?

与内部类或PassengerComponent无关,只与变量作用域有关

由于 PC1 内部 if/else 块中声明,因此它仅在该块中已知。

如果要在 if/else 块之后使用 PC1,请在上一级声明它:

int random = (int )(Math.random() * 1 + 0 );
PassengerComponent PC1;
if( random == 0)
{
    PC1 = new PassengerComponent("Passenger Component #1" , 0);    
}
else
{
    PC1 = new PassengerComponent("Passenger Component #1" , 1); 
}

PC1.ready_check(Sc, Cg);