多态性

                          多态性

  通过覆盖父类的方法来实现,在运行时根据传递的对象引用,来调用相应的方法 。

代码
public class Car {
public void run() {
System.out.println(
"car running");
}
}

class Bus extends Car {
public void run() {
System.out.println(
"bus running");
}
public static void main(String[] args) {
Bus b
= new Bus();
}
}

class Test {
static void method(Car c) {
c.run();
}
public static void main(String[] args) {
Car car;
Bus bus
= new Bus();
car
= bus;
Test.method(car);
}
}
// output: bus running

  当我们将子类对象的引用传给声明为父类的一个对象变量,如果子类有的方法,就调用子类的方法,如果子类没有这个方法,就调用父类的方法。

代码
public class Car {
public void run() {
System.out.println(
"car running");
}
}

class Bus extends Car {
}

class Test {
static void method(Car c) {
c.run();
}
public static void main(String[] args) {
Car car;
Bus bus
= new Bus();
car
= bus;
Test.method(car);
}
}
// output: car running

  当我们将子类对象的引用传给声明为父类的一个对象变量,如果子类有的方法,就调用子类的方法,如果子类没有这个方法,就调用父类的方法。这句话也不一定,当父类的该方法为私有的,那么就还是调用子类的,如果子类无这个方法,而父类有这个方法,但它是私有的,那么就会报告编译时异常。

多态性的好处

  它可以根据在运行的时候,根据我们传递不同对象的引用来调用不同对象的方法。

重载可以看作是编译时多态,在编译时刻,根据我们调用方法传递参数的不同来调用相应的方法。上面讲的多态叫做运行时多态,在运行时刻,根据我们传递对象引用的不同来调用相应对象的方法。

 

 

posted @ 2010-12-21 00:02  meng72ndsc  阅读(175)  评论(0编辑  收藏  举报