多态性 - 演示程序

来源:互联网 发布:举牌什么意思网络用语 编辑:程序博客网 时间:2024/05/17 22:35

/** * 此程序只是演示多态性的示例程序,别无它用。 */import java.util.Random;/** * 定义一个抽象类,用于将来被继承。 */abstract class Fruit{public abstract void description();}/** * 定义扩展类 */class Apple extends Fruit{@Overridepublic void description(){System.out.println("I am an " + this.getClass().getName());}}/** * 定义扩展类 */class Orange extends Fruit{@Overridepublic void description(){System.out.println("I am an " + this.getClass().getName());}}/** * 定义扩展类 */class Banana extends Fruit{@Overridepublic void description(){System.out.println("I am a " + this.getClass().getName());}}class Message{/** * 针对抽象类而不是扩展类编程 * @param f - 使用抽象类对象作参数,将来传进来扩展类对象可实现多态。 */public void getFruitInfo(Fruit f){/** * 对象和方法在运行时绑定, * 因此真正调用的是实参具体类对象的description方法。 */f.description();}}class FruitBasket{/** * 此函数随机返回一个Fruit实例 * @return 一个Fruit实例 */public Fruit getFruit(){switch (new Random().nextInt(3)){case 0: return new Apple();case 1:return new Orange();case 2:default:return new Banana();}}}public class TestMain{public static void main(String[] args){for (int i = 0; i < 10; i++){// 创建一个水果篮子实例FruitBasket mFruitBasket = new FruitBasket();// 向水果篮子发消息 - 给我一个水果Fruit mFruit = mFruitBasket.getFruit();// 创建一个消息实例Message mMessage = new Message();// 向消息实例发消息 - 给我水果信息mMessage.getFruitInfo(mFruit);}}}


原创粉丝点击