`
badpie
  • 浏览: 5460 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java Code之多态

阅读更多
package com.iteye.badpie.javacode.duotai;

/**
 * 人民警察
 */
public interface IPolice {

    /**
     * 抓小偷
     */
    public void catchThief();

}

 

package com.iteye.badpie.javacode.duotai;

/**
 * 一个警察,执行抓小偷任务.
 */
public class PoliceReal implements IPolice {

    @Override
    public void catchThief() {
        System.out.println("抓住小偷了");
    }

}
 
package com.iteye.badpie.javacode.duotai;

/**
 * 另一个警察,也执行抓小偷任务.
 */
public class PoliceHyp implements IPolice {

    @Override
    public void catchThief() {
        System.out.println("大冷天的抓什么小偷啊,不如偷个菜.");
    }

}
 
package com.iteye.badpie.javacode.duotai;

/**
 * 市民
 */
public class Citizen {

    private String mName;

    public Citizen(String name) {
        mName = name;
    }

    /**
     * 市民报案
     */
    public void report(IPolice police) {
        System.out.println(String.format("市民%s丢失手机,向警察报案抓小偷.", mName));
        police.catchThief();
    }

}
市民虽然向警察报了案,
但你不知道能不能把小偷抓住,
甚至你都不知道他们有没有去抓小偷,
还有可能你在电影里看到的剧情真的发生了...

  事情经过可能是这样:

package com.iteye.badpie.javacode.duotai;

public class Main {

    public static void main(String[] args) {
        Citizen citizen = new Citizen("张三");
        IPolice police = getPolice();
        citizen.report(police);
    }

    private static IPolice getPolice() {
        return new PoliceReal();
    }

}

事情结果一:

市民张三丢失手机,向警察报案抓小偷.
抓住小偷了

事情经过也可能是这样:

package com.iteye.badpie.javacode.duotai;

public class Main {

    public static void main(String[] args) {
        Citizen citizen = new Citizen("张三");
        IPolice police = getPolice();
        citizen.report(police);
    }

    private static IPolice getPolice() {
        return new PoliceHyp();
    }

}

事情结果二:

市民张三丢失手机,向警察报案抓小偷.
大冷天的抓什么小偷啊,不如偷个菜.

 事情经过还可能是这样:

package com.iteye.badpie.javacode.duotai;

public class Main {

    public static void main(String[] args) {
        Citizen citizen = new Citizen("张三");
        IPolice police = getPolice();
        citizen.report(police);
    }

    private static IPolice getPolice() {
        return new PoliceReal() {

            @Override
            public void catchThief() {
                System.out.println("抓小偷?笑话,抓了小偷我哪儿收保护费去啊.");
            }

        };
    }

}

 事情结果三:

市民张三丢失手机,向警察报案抓小偷.
抓小偷?笑话,抓了小偷我哪儿收保护费去啊.
分享到:
评论

相关推荐

    Java继承,多态,接口,常量,代码块

    在Java编程语言中,继承、多态、接口、常量以及代码块是核心概念,它们构建了面向对象编程的基础。让我们逐一深入理解这些知识点。 **继承(Inheritance)** 继承是面向对象编程的一个重要特性,它允许一个类(子类...

    Java code Java code

    5. 继承与多态:Java支持单一继承,一个类只能直接继承自一个父类,但可以通过接口实现多重继承的效果。多态性是Java面向对象的重要特性,允许子类对象替换父类对象,实现灵活的代码设计。 6. 异常处理:Java提供了...

    java基础,javacode

    流分为字节流和字符流,有输入流和输出流之分。 10. **线程与并发** Java内置对多线程的支持,通过实现Runnable接口或继承Thread类可以创建线程。此外,Java并发库提供了高级同步机制,如synchronized、Lock、...

    Java抽象类接口与多态PPT教案学习.pptx

    Java抽象类接口与多态PPT教案学习 Java抽象类接口与多态是Java编程语言的核心概念,本篇资源文件将详细介绍Java中的抽象类、接口和多态的概念、特点和应用。 一、抽象类 抽象类是Java中的一种特殊的类,它不能被...

    JAVA code example 100 例

    在本资源"JAVA code example 100 例"中,我们拥有一系列精心挑选的Java编程示例,旨在帮助开发者深入理解和应用Java语言。这个压缩包包含了从基础到高级的100个源代码实例,覆盖了Java编程的多个重要方面。下面,...

    java_code.rar_java code

    【标题】"java_code.rar_java code" 涵盖了丰富的Java编程知识,这是一份包含80多个精心整理的Java代码示例集合,旨在帮助初学者和有经验的开发者深入理解和应用Java语言。这些代码实例是学习Java编程的重要资源,...

Global site tag (gtag.js) - Google Analytics