- 定义一个基本类Shape,有一个draw方法,定义三个类Circle(圆)、Triangle(三角形)、Square(正方形)都继承于Shape。在测试类中定义一个方法doStuff,传入基本类shape为参数,并调用draw方法。使用父类Shape创建三个类Circle、 Triangle、Square的实例对象并分别作为参数传入draw方法中。
- 提示:多态
代码:
1 package tex11.xjb.jc;
2
3 public class Shape {//定义基本类
4 void draw() {
5 System.out.println();
6 }
7 }
8
9 定义Circle类:
10
11 package tex11.xjb.jc;
12
13 public class Circle extends Shape {
14 void draw() {
15 System.out.println("Calling Circle.draw()");
16 }
17
18 public Circle() {
19 // TODO Auto-generated constructor stub
20 }
21
22 }
23
24 定义Triangle类:
25
26 package tex11.xjb.jc;
27
28 public class Triangle extends Shape {
29 void draw() {
30 System.out.println("Calling Triangle.draw()");
31 }
32 public Triangle() {
33 // TODO Auto-generated constructor stub
34 }
35
36 }
37
38 定义Square类:
39
40 package tex11.xjb.jc;
41
42 public class Square extends Shape {
43 void draw() {
44 System.out.println("Calling Square.draw()");
45 }
46 public Square() {
47 // TODO Auto-generated constructor stub
48 }
49
50 }
51
52 测试类:
53
54 package tex11.xjb.jc;
55
56 import java.util.Random;
57
58 public class Test2 {
59 static void doStuff(Shape s) {
60 s.draw();
61 }
62 static void drawShapes(Shape[] ss) {
63 for(int i=0;i<ss.length;i++) {
64 ss[i].draw();
65 }
66 }
67 public static void main(String[] args) {
68 // TODO Auto-generated method stub
69 Random rand = new Random();
70 Shape[] s = new Shape[6];
71 for(int i=0;i<s.length;i++) {
72 switch(rand.nextInt(3)) {
73 case 0:s[i]=new Circle();break;
74 case 1:s[i]=new Triangle();break;
75 case 2:s[i]=new Square();break;
76 }
77 }
78 drawShapes(s);
79 }
80
81 }