这其中的this代表什么?整个代码的意思我很糊涂。
import java.util.*;/**
* Description:
* <br/>Copyright (C), 2005-2008, Yeeku.H.Lee
* <br/>This program is protected by copyright laws.
* <br/>Program Name:
* <br/>Date:
* @author Yeeku.H.Lee kongyeeku@163.com
* @version 1.0
*/
public class Canvas
{
//同时在画布上绘制多个形状
public void drawAll(List<? extends Shape> shapes)
{
for (Shape s : shapes)
{
s.draw(this);
}
}
public static void main(String[] args)
{
List<Circle> circleList = new ArrayList<Circle>();
circleList.add(new Circle());
Canvas c = new Canvas();
c.drawAll(circleList);
}
}
/**
* Description:
* <br/>Copyright (C), 2005-2008, Yeeku.H.Lee
* <br/>This program is protected by copyright laws.
* <br/>Program Name:
* <br/>Date:
* @author Yeeku.H.Lee kongyeeku@163.com
* @version 1.0
*/
//定义一个抽象类Shape
public abstract class Shape
{
public abstract void draw(Canvas c);
}
/**
* Description:
* <br/>Copyright (C), 2005-2008, Yeeku.H.Lee
* <br/>This program is protected by copyright laws.
* <br/>Program Name:
* <br/>Date:
* @author Yeeku.H.Lee kongyeeku@163.com
* @version 1.0
*/
//定义Shape的子类Circle
public class Circle extends Shape
{
//实现画图方法,以打印字符串来模拟画图方法实现
public void draw(Canvas c)
{
System.out.println("在画布" + c + "画一个圆");
}
}
----------------解决方案--------------------------------------------------------
Circle类中的draw函数 接受参数为名为Canvas的类 在Canvas函数中 循环调用所有的从Shape类扩展的类 每次循环用this把当前的所在的Canvas类本身传到draw函数中
----------------解决方案--------------------------------------------------------
circleList.add(new Circle());自动调用public void draw(Canvas c)并把括号里的实参Canvas c传入方法里面吗?Canvas c依我看应该是形参。所以我认为circleList.add(new Circle());这句并没有传入实参。我说的对吗?
----------------解决方案--------------------------------------------------------