已有101人关注
Java多态课本例题疑惑
发表在Java图书答疑 2019-11-07 悬赏:2 学分 《Java从入门到精通(第4版)》第10章 接口、继承与多态
是否精华
版块置顶:

老师您好:《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语句不执行,所以程序结束。我的理解哪里出现问题了呢


分享到:
精彩评论 2
根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2019-11-08
沙发

你代码里哪来的循环?

stq20192019
学分:62 LV3
2019-11-08
板凳

根号申 发表于2019-11-08 09:07

你代码里哪来的循环?

哦哦,晕了

首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照