这样,系统始终只处理3个对象:Shape对象、Drawing对象、DP1或DP2对象。以下是JAvA语言实现,能够正确编译通过。 [Java代码] //DP1.Java文件 public class DPI static public void draw_a_line(double x1,double y1, double x2,double y2) //省略具体实现 //DP2.java文件 public class DP2 static public void drawline(double x1,double y1, double x2,double y2) //省略具体实现
//Drawing.java文件 (1) public class Drawing abstract public void drawLine(double x1,double y1,double x2,double y2); //V1Drawing.java文件 public class V1Drawing extends Drawing public void drawLine(double x1,double y1,double x2,double y2) DP1.draw_a_line(x1,y1,x2,y2);
//V2Drawing.java文件 public class V2Drawing extends Drawing public void drawLine(double x1,double y1, double x2,double y2)//画一条直线 (2) ;
//Shape.java文件 abstract public class Shape abstract public void draw(); private (3) dp; Shape(Drawing dp) _dp=dp; protected void drawLine(double x1,double y1, double x2,double y2) (4) ;
//Rectangle.java文件 public class Rectangle extends Shape private double_x1,_x2,_y1,_y2; public Rectangle(Drawing dp, double x1,double y1, double x2,double y2) (5) ; _x1=x1;_x2=x2; _y1=y1;_y2=y2; public void draw() //省略具体实现