态是java面向对象里三个基本特征之一,也可以说前面的继承与封装就是为多态作铺垫。
多态需要满足三个条件:
继承,方法重写,父类指向子类对象,如下代码:
class Test{
public void cook(){System.out.println("00000000");}
}//创建一个父类,并定义一个cook方法。
class Neek extends Test{
public void cook(){System.out.println("111111111");
}//创建一个子类继承Test类,并重写cook方法
class Still extends Neek{
public void cook(){System.out.println("2222222222");
}//创建一个Neek的子类,并重新方法他们都有共同的超类Test。
class Jeep extends Still{
public static void main(String[] args){
Test a=new Neek();
Test b=new Still();
a.cook();
b.cook();}
}
运行以上代码可以看到将输出Neek的cook和Still的cook方法,在这里,使用一个基类,却调用到了不同的方法行为,这就是多态。
比如你和你朋友都是烟鬼,一天你和你朋友一起出去结果你忘了带烟,于是你向你朋友要烟,第一次你朋友给了一根熊猫你,你第二次要的时候你朋友给了支中华你。
在这里,你通过烟这个同一个字来找你朋友要烟,却拿到了不同的烟。
烟 a=熊猫;
烟 a=中华;
这便是多态,多态的应用随处可见,比如你在浏览器里面按下F5是刷新网页,在桌面里按下F5确实刷新桌面,相同的动作却可以引发多种不同的行为。
多态需要满足三个条件:
继承,方法重写,父类指向子类对象,如下代码:
class Test{
public void cook(){System.out.println("00000000");}
}//创建一个父类,并定义一个cook方法。
class Neek extends Test{
public void cook(){System.out.println("111111111");
}//创建一个子类继承Test类,并重写cook方法
class Still extends Neek{
public void cook(){System.out.println("2222222222");
}//创建一个Neek的子类,并重新方法他们都有共同的超类Test。
class Jeep extends Still{
public static void main(String[] args){
Test a=new Neek();
Test b=new Still();
a.cook();
b.cook();}
}
运行以上代码可以看到将输出Neek的cook和Still的cook方法,在这里,使用一个基类,却调用到了不同的方法行为,这就是多态。
比如你和你朋友都是烟鬼,一天你和你朋友一起出去结果你忘了带烟,于是你向你朋友要烟,第一次你朋友给了一根熊猫你,你第二次要的时候你朋友给了支中华你。
在这里,你通过烟这个同一个字来找你朋友要烟,却拿到了不同的烟。
烟 a=熊猫;
烟 a=中华;
这便是多态,多态的应用随处可见,比如你在浏览器里面按下F5是刷新网页,在桌面里按下F5确实刷新桌面,相同的动作却可以引发多种不同的行为。