已有101人关注
JAVA从入门到精通一书遇到的的问题
发表在Java图书答疑 2010-01-19
是否精华
版块置顶:
JAVA从入门到精通  174页 例10.12
public class CopyOfQuadrangle {
private CopyOfQuadrangle[] qtest = new CopyOfQuadrangle[6];可以解释下这句的作用吗?
                                                                   
private int nextIndex = 0;

public void draw(CopyOfQuadrangle q) {
if(nextIndex < qtest.length) {
qtest[nextIndex] = q;可以解释下这句的作用吗?
System.out.println(nextIndex);
nextIndex++;
}

}

public static void main(String[] args) {
CopyOfQuadrangle q = new CopyOfQuadrangle();
q.draw(new CopyOfSquare());
q.draw(new CopyOfParallelogramgle());
}
}
class CopyOfSquare extends CopyOfQuadrangle{ 
public CopyOfSquare(){
System.out.println("正方形");
}
}
class CopyOfParallelogramgle extends CopyOfQuadrangle{ 
public CopyOfParallelogramgle(){
System.out.println("平行四边形");
}
}
运行结果是
正方形
0
平行四边形
1
根据向上转型原则,在主方法中以CopyOfSquare和CopyOfParallelogramgle为参数调用draw方法,怎么会显示正方形和平行四边形。怎么会调用子类的构造方法,是draw()方法中哪句起的作用?这里我不明白。希望解释下。谢谢
分享到:
精彩评论 1
free007
学分:0 LV1
2010-01-19
沙发
private CopyOfQuadrangle[] qtest = new CopyOfQuadrangle[6];可以解释下这句的作用吗?
作用是实例化CopyOfQuadrangle数组

qtest[nextIndex] = q;可以解释下这句的作用吗?
是对数组中的元素进行赋值


draw()方法的参数需要CopyOfQuadrangle对象,代码中调用了
q.draw(new CopyOfSquare());
q.draw(new CopyOfParallelogramgle());
创建了子类的实例对象,所以会输出正方形和平行四边形
首页上一页 1 下一页尾页 1 条记录 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经营性网站备案信息 营业执照