Java中的继承,访问子方法并使用父类数组
我有一个java程序,由一个名为Piece的类组成,它有四个子对象。 即, 几何体、圆延伸几何体、圆2延伸圆等 我想创建一个几何体对象数组,并访问circle或circle2方法 前。Java中的继承,访问子方法并使用父类数组,java,oop,object,inheritance,Java,Oop,Object,Inheritance,我有一个java程序,由一个名为Piece的类组成,它有四个子对象。 即, 几何体、圆延伸几何体、圆2延伸圆等 我想创建一个几何体对象数组,并访问circle或circle2方法 前。 Geometry[i].method1() 然而,我似乎不能这样做。制作具有相同父对象的对象数组并以这种方式访问其子对象的方法是否有最佳做法?不能对父类对象调用子类方法。这样想吧。圆是一种几何形状。但并非所有的几何形状都是圆。因此,并非所有几何形状都可以具有圆属性(在本例中为方法) 您需要做的是告诉编译器将几何体
Geometry[i].method1()代码>
然而,我似乎不能这样做。制作具有相同父对象的对象数组并以这种方式访问其子对象的方法是否有最佳做法?不能对父类对象调用子类方法。这样想吧。圆是一种几何形状。但并非所有的几何形状都是圆。因此,并非所有几何形状都可以具有圆属性(在本例中为方法)
您需要做的是告诉编译器将几何体
对象视为一个圆或父类几何体
下的任何其他子类对象
。这被称为“铸造”
因此基本上您可以将几何体
对象投射到圆
对象,如下所示:
((圆)几何[i]).method1()代码>谢谢。只是一个简单的问题,几何体对象数组可以让我在其中创建子对象,没有问题吧?有人告诉我,数组大小是在启动时分配的,因此不会有空间容纳大小不同的子对象。我不太明白这个问题。但是如果你问的是你可以在数组中添加几何类的任何子类,那么你可以。但是,当您尝试访问它时,您将返回一个几何对象,而不是一个圆。因此,如果你想调用该对象的某个方法,你必须知道它是什么类型。现在如果你在谈论数组中可以存储多少项。那么是的,数组的大小是固定的。因此,如果您在一个大小为10的数组中有10个项目,并且您想再存储一个,那么您有2个选项。1) 将数组复制到更大的数组中。2) 使用ArrayListi更具体地说,如果数组是几何体对象,而圆对象在内存中占用更多空间,java是否只为子对象分配了足够的空间,还是在我分配圆时在内存中进行了更改?这超出了您的问题范围。简单地说,数组中存储的每个对象的大小不会影响数组的功能。唯一的size属性是要存储在其中的元素数