当前位置: 代码迷 >> Java相关 >> 这其中的this代表什么?整个代码的意思我很糊涂。
  详细解决方案

这其中的this代表什么?整个代码的意思我很糊涂。

热度:317   发布时间:2012-03-23 22:59:25.0
这其中的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 + "画一个圆");
    }
}
搜索更多相关的解决方案: void  class  Copyright  copyright  version  

----------------解决方案--------------------------------------------------------
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());这句并没有传入实参。我说的对吗?

----------------解决方案--------------------------------------------------------
  相关解决方案