在完全不同的类中构造子类对象

时间:2014-12-09 00:28:05

标签: java arraylist subclass extends

所以我想说我有以下代码。

public class ImageMaker {

  // Variables
  static ArrayList<Shape> shapes = new ArrayList<Shape>();//all the shapes contained in the image

  public static void main (String[] args) {
    shapes.add(new Rect());  //here i want to add an object Rect
  }
}

并在另一个名为Shape的类中显示如下。现在我想将一个Rect类型的对象添加到我的形状数组列表中,但我不能,因为它说Rect不能解析为一个类型。我该如何实现呢?当然我有更多的实例变量和方法,但我没有显示它们。如果您需要更多信息,请与我们联系。谢谢!

public class Shape {
  public class Rect extends Shape {

  //rect instance variables

  public Rect(){
    super();
    System.out.print("Youve made a rect within shape");
  }
}

2 个答案:

答案 0 :(得分:0)

正如@tsnorri在评论中提到的那样,您只需将Rect声明为Shape中的一个类。

public class Shape {

}

public class Rect extends Shape {
    //rect instance variables
    public Rect(){
        super();
        System.out.print("Youve made a rect within shape");
    }
}

如果您想要了解有关Java中嵌套类的更多信息,这是一个很好的起点:http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

编辑(工作示例)

总的来说,我建议你阅读一些关于面向对象编程和JAVA的基础知识。

这是将ShapeRect添加到ArrayList的工作示例。

import java.util.ArrayList;

class ImageMaker
{
    static ArrayList<Shape> shapes = new ArrayList<Shape>();//all the shapes contained in the image

    public static void main(String args[])
    {
        shapes.add(new Shape());
        shapes.add(new Rect());
    }

    public static class Shape {
        System.out.print("Created new Shape");
    }

    public static class Rect extends Shape {
        //rect instance variables
        public Rect(){
            super();
            System.out.print("You've made a rect within shape");
        }
    }
}

欢呼声

答案 1 :(得分:0)

上课static

public static class Rect extends Shape {

然后使用new Shape.Rect()

但是,这似乎很难使用嵌套类,您应该考虑在其自己的文件中定义Rect之外的Shape