【问题标题】:How to use a object created in a subclass of a abstract class, in the abstract class如何使用在抽象类的子类中创建的对象,在抽象类中
【发布时间】:2019-09-01 23:56:24
【问题描述】:

我创建了一个飞机座位预订系统,该系统是通过我的大学为任务提供的简报创建的。我遇到了一个我无法弄清楚的主要问题。

简要说明抽象类必须有一个抽象方法和大约 4 个公共方法。在抽象类的两个子类中,我们必须初始化对象数组(所有普通席位)。但是,一旦它们被初始化,我不知道如何将它们发送回抽象类(它有一个检查未预订飞机座位的方法,这是我需要初始化座位对象的地方)

ArrayIndexOutOfBounds on a object that should be in bounds

上面的链接包含每个类及其代码,我之前遇到了一个错误,有人帮我解决了这个错误,只是认为在这里链接完整文件会更容易。

我只想在抽象类中使用在抽象类的子类中创建的对象(座位)的初始化数组。

非常感谢所有输入!

【问题讨论】:

  • PetiteFloorGrid 拥有自己的Seat[][] newSeats,而不是直接使用(包括初始化)FloorGrid 的Seat[][] seat(然后回答问题)有什么原因吗?
  • ps,小提示:使用protected 很棒,但这也允许从同一个包中的类进行访问——例如,您仍然允许TrainSeatBookingApplication 访问变量。最好保留所有内容 private,或者将 protected 与明智地创建继承树的包一起使用。
  • 你们太棒了,非常感谢您提供所有这些信息!我们刚刚被介绍使用受保护的类和子类(第一个使用它的系统),所以我仍然可以访问楼层网格中的座位变量的想法直接通过了我。再次感谢!

标签: java null system


【解决方案1】:

在抽象类方法中(你想使用初始化数组的地方),你可以假设数组已经初始化。但是,在子类中,您不能有另一个“Seat[][] newSeats;”。因此,只需在所有子类中删除它即可。

一个简单的例子如下,

//This will print 6 to the std output
public class HelloWorld{

     public static void main(String []args){
        Child test = new Child();
        System.out.println(test.getArrFirst());
     }


     public static abstract class Parent{
        int[] abc;

        public int getArrFirst(){
            return abc[1];
        }
     }

     public static class Child extends Parent{

         public Child(){
             abc = new int[10];
             abc[1] = 6;
         }
     }
}

【讨论】:

  • 非常感谢您的帮助,很好地回答了我的问题。刚开始使用子类和受保护的关键字,因此自动将其视为独立类!
猜你喜欢
  • 2013-12-03
  • 1970-01-01
  • 2016-07-21
  • 1970-01-01
  • 2010-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-22
相关资源
最近更新 更多