老师您好:《Java从入门到精通》第五版 185页 10.6多态 例10.12
public class Quadrangle {
// 实例化保存四边形对象的数组对象
private Quadrangle[] qtest = new Quadrangle[6];
private int nextIndex = 0;
public void draw(Quadrangle q) { // 定义draw()方法,参数为四边形对象
if (nextIndex < qtest.length) {
qtest[nextIndex] = q;
System.out.println(nextIndex);
nextIndex++;
}
}
public static void main(String[] args) {
// 实例化两个四边形对象,用于调用draw()方法
Quadrangle q = new Quadrangle();
q.draw(new Square()); // 以正方形对象为参数调用draw()方法
// 以平行四边形对象为参数调用draw()方法
q.draw(new Parallelogramgle());
}
}
class Square extends Quadrangle { // 定义一个正方形类,继承四边形类
public Square() {
System.out.println("正方形");
}
}
// 定义一个平行四边形类,继承四边形类
class Parallelogramgle extends Quadrangle {
public Parallelogramgle() {
System.out.println("平行四边形");
}
}
我对理解是
该例中首先Quadrangle[] qtest = new Quadrangle[6]语句在类中定义了一个6个参数的数组qtest[]。当以正方形对象为参数调用draw()方法时,draw()方法中的参数q其实就是对象new Square(),相当于q=new Square();然后执行if语句,括号内的条件语句翻译为0<6,接着循环6次执行if大括号{}中的语句在屏幕上打印
正方形
0
1
2
3
4
5
然后if循环结束,此时nextIndex=6。 程序继续走到q.draw(new Parallelogramgle());这里,首先打印
平行四边形
然后因为nextIndex=6,if语句不执行,所以程序结束。我的理解哪里出现问题了呢