java--面向对象之多态

类之间的继承关系使子类具有父类的所有变量和方法,=> 父类所具有的方法也可以在它所有子类中使用,发给父类的消息也可以发送给子类 => 子类的对象也是父类的对象=>子类的对象既可以做本身的类型,也可以做父类的类型。 呵呵,上述推导公式好像绕口令似的。我们举个例子理解上述概念。举例:

    public class 动物    //动物是父类

    public class 猫 extends 动物    //猫是子类

代码
// java中的多态

class Shape {

void draw() {}

void erase() {}

}

//圆形

class Circle extends Shape {

void draw() {

System.out.println(
"Circle.draw()");

}

void erase() {

System.out.println(
"Circle.erase()");

}

}

//正方形

class Square extends Shape {

void draw() {

System.out.println(
"Square.draw()");

}

void erase() {

System.out.println(
"Square.erase()");

}

}

//三角形

class Triangle extends Shape {

void draw() {

System.out.println(
"Triangle.draw()");

}

void erase() {

System.out.println(
"Triangle.erase()");

}

}

public class Shapes {

public static Shape randShape() {

switch((int)(Math.random() * 3)) {

default:

case 0: return new Circle();

case 1: return new Square();

case 2: return new Triangle();

}

}

public static void main(String[] args) {

Shape[] s
= new Shape[9];

// 向数组里添加类型

for(int i = 0; i < s.length; i++)

s[i]
= randShape();

// 用多态的方法调用

for(int i = 0; i < s.length; i++)

s[i].draw();

}

}

 

它的突出优点是使程序具有良好的扩展性。它通过继承,可以派生出任意多个新类型,或向基类增加更多方法时,无须修改原有对基础类进行处理的相关程序。就是扩展性好。

    我们返回再看面向对象(专指OOP)的这三个特性封装、继承、多态三者的关系。没有封装就没有继承,没有继承就没有多态。

posted on 2010-08-03 13:56  lovening  阅读(250)  评论(0编辑  收藏  举报