Java中的多态
多态的优点网上一大堆,不做赘述,这里只简单举一些例子并附上实验结果给想了解多态用法却没空敲代码的朋友。
按照网上经验,定义一个形状类Shape,以及它的三个子类:
class Shape{
void draw(){
System.out.println("我是啥形状");
}
}
class sanjiao extends Shape{
void draw(){
System.out.println("三角");
}
void text(){
System.out.println("三角的备注");
}
}
class yuan extends Shape{
void draw(){
System.out.println("圆");
}
}
class juxing extends Shape{
@Override
void draw() {
super.draw();
}
}
public class Inherit {
public static void main(String[] args) {
Shape a = new sanjiao();
a.draw();
Shape b = new juxing();
b.draw();
}
}
结果如下:
我们可以看出多态的用法很简单,不同的子类继承了共同的父类形成多态。其中多态必须满足三个条件:
1)可继承,父类要能够被子类继承,简单点就是充当父类的类没有被final修饰符修饰。
2)可重写,子类要能够重写父类的方法,如例子中父类Shap有一个draw()方法,三个子类中都要重写父类的方法。
3)创建对象时,父类引用要指向子类对象。如例子main方法中,Shape a = new sanjiao();
3)创建对象时,父类引用要指向子类对象。如例子main方法中,Shape a = new sanjiao();
第二个输出区别于第一个,采用super关键字直接调用的父类中被重写的方法。