【发布时间】:2020-06-29 01:01:36
【问题描述】:
假设一个有一个超类的形状,两个子类是正方形和三角形。 然后可以制作一个包含正方形和三角形对象的类型形状数组吗? 如果是这样,这样做的最佳做法是什么?
下面我想知道的例子是可能的:
class shapes{
protected int linear_scale_factor = 4;
}
class square extends shapes {
int area;
int scaled_area = area * linear_scale_factor**2;
}
class triangle extends shapes {
int area;
int scaled_area = area * linear_scale_factor**2;
}
class main{
shapes[] shapes_arr = new shapes[8];
shapes_arr[0] = new square(34);
}
编辑
class shapes{
protected int linear_scale_factor = 4;
protected int scaled_area ;
}
class square extends shapes {
int area;
int scaled_area = area * linear_scale_factor*linear_scale_factor;
public square(int i){
area = i;
}
}
class triangle extends shapes {
int area;
int scaled_area = area * linear_scale_factor*linear_scale_factor;
public triangle(int i){
area = i;
}
}
class main{
public static void main(String[] args) {
shapes[] shapes_arr = new shapes[8];
shapes_arr[0] = new square(34);
shapes_arr[1] = new triangle(12);
shapes_arr[2] = new square(453);
for(shapes shape : shapes_arr){
System.out.println(shape.scaled_area);
}
}
}
这样的东西不起作用,为什么?
【问题讨论】:
-
是的。这将是完全合法的。
-
这是完全合法的,也是意料之中的。您在设置时遇到问题吗?
-
问题是如果我选择该数组的一个元素,比如 2 和它的三角形,我将无法访问其属性,例如
shapes_arr[2].scaled_area