Java有很好的面对对象的特性,接口给出了抽象的、没有实例化的方法,就是在上一个层面上完善面对对象的特性。比如画图的擦除、画图的画点等功能,对于不同的类他的方法是不一样的,但是在每一个类中具体去定义又显得复杂,干脆升维度,在接口中给出类的统一方法,便于理解和读懂。
第二个部分就是分别在不同的类中实例化刚刚接口中的抽象函数。
第三部分真正的实施的主体,定义了需要完成的Action,这个也是不区分类的,抽象的一个总体,便于理解。然后通过一个循环语句对刚刚的定义的类实例化。
面对对象编程的魅力就在这里,他是符合框架的,逻辑树的,分层次的,金字塔结构的一种语言特性,充满魅力又容易理解。
package test;
public interface Shape {
void draw();
void erase();
}
class Circle implements Shape{
public void draw() {
System.out.println("Calling Circle draw()");
}
public void erase() {
System.out.println("Calling Circle erase()");
}
}
class Square implements Shape{
public void draw() {
System.out.println("Calling Square draw()");
}
public void erase() {
System.out.println("Calling Square erase()");
}
}
class Triangle implements Shape{
public void draw() {
System.out.println("Calling Triangle draw()");
}
public void erase() {
System.out.println("Calling Triangle erase()");
}
}
public class Test{
static void drawOneShape(Shape s) {
s.draw();
}
static void drawShapes(Shape[] ss) {
for(int i=0;i<ss.length;i++) {
ss[i].draw();
}
}//定义一个不区分类的统一的行为方法,总体的结构
public static void main(String [] agus) {
Random rand=new Random();
Shape[] s=new Shape[9];//申明一个含有9个Shape实例的数组,开辟空间
for(int i=0;i<s.length;i++) {
switch(rand.nextInt(3)) {
case 0:s[i]=new Circle();break;//对数组中的类实例化
case 1:s[i]=new Square();break;
case 2:s[i]=new Triangle();break;
}
}
drawShapes(s);
}
}