内在阶级和构造者

时间:2016-02-26 11:56:11

标签: java constructor inner-classes

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

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

passengerComponent继承自:

class PlaneComponent
{
   String Description ;
}

问题是内部类应该随机填充,这意味着 有时乘客组件会有一个内部组件,有时不会! 我试图这样做的方法如下:

        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对任何想知道的人都没有任何问题)

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

1 个答案:

答案 0 :(得分:1)

它与内部类或PassengerComponent无关,只与范围可变。

由于PC1if/else块中声明 ,因此只能在此块中知道。

如果您想在PC1阻止后使用if/else,请将其声明为以上级别:

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);