多态的概述
什么是多态:多种形态。
分两部分:
功能多态:一个行为多种实现方式 体现:重写和重载
形态多态:一个类型的多种表现形式比如:动物多种表现形式:猫、狗
Animal a=new Dog();//父类的引用指向子类的对象(即向上转型),反过来不行
多态例题:
- 请使用多态实现以下需求:牛犇有两个很要好的朋友,一个是中国的王小强,喜欢吃四川菜、练太极拳;另一个是美国的约翰,喜欢吃披萨、打橄榄球。每当朋友来拜访牛犇时,牛犇都会按各人的喜好招待他们。
- 代码如下:
-
package Demo02; /*主类 */ public abstract class Niu { private String name; private String love; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getLove() { return love; } public void setLove(String love) { this.love = love; } public abstract void print(); }
-
package Demo02; /*主人类 */ public class Master { public void game(Niu niu){ niu.print(); } }
-
package Demo02; /*王小强类 */ public class Wangxiaoqiang extends Niu { @Override public void print() { System.out.println("姓名"+this.getName()+"喜欢"+this.getLove()); } }
-
package Demo02; /*约翰类 */ public class Yuehan extends Niu { @Override public void print() { System.out.println("姓名"+this.getName()+"爱好"+this.getLove()); } }
-
package Demo02; import java.util.Scanner; public class Text { public static void main(String[] args){ Niu wangxiaoqiang=new Wangxiaoqiang(); wangxiaoqiang.setName("王小强"); wangxiaoqiang.setLove("吃四川菜,练太极拳"); Niu yuehan=new Yuehan(); yuehan.setName("约翰"); yuehan.setLove("吃披萨,打橄榄球"); Master master=new Master(); master.game(wangxiaoqiang); } }