Java 面向对象 之 匿名内部类 警报器

简介:

http://www.verejava.com/?id=16992876520663

/**
    知识点: 匿名内部类

    题目: 摩托车上装有警报器,当有人碰到摩托车时, 警报器发出报警响声

    思路:
        1. 抽象出类:
            1.1 摩托车(Moto),报警器(Alarm), 人(Person)
        2. 找出类的关系:
            2.1 摩托车上装有报警器  Alarm -> Moto(1对1)
            2.2 警报器有不同品牌的分类 Alarm
        3. 找出类属性:
            3.1 Moto(品牌,报警器的引用)
            3.2 Alarm(品牌)
            3.3 Person(姓名)
        4. 找出类方法:
            4.1 摩托车上装有报警器 Moto{load(Alarm alarm)}
            4.2 人碰到摩托车 Person{touch(Moto moto)}
            4.3 警报器发出响声 Alarm{beep()}

*/

public class TestMoto2 {
    
    public static void main(String[] args) {
        //准备生产一台南方摩托车
        Moto moto = new Moto("南方");
        //摩托车上预装一台 小功率的 报警器
        Alarm alarm = new Alarm() {
            public void beep() {
                System.out.println("有人偷车");
            }
        };
        moto.load(alarm);

        //准备生产一台 嘉陵 摩托车
        Moto moto2 = new Moto("嘉陵");
        moto2.load(alarm);

        //这个时候李明过来了
        Person p = new Person("李明");
        //李明不小心碰到了摩托车, 摩托车发出了报警声
        p.touch(moto);
        p.touch(moto2);
    }
}

interface Alarm {
    
    //报警器能发出报警声
    public void beep();
}

class Moto {
    
    private String brand;//品牌
    private Alarm alarm;//报警器引用

    public Moto(String brand) {
        this.brand = brand;
    }

    public Alarm getAlarm() {
        return this.alarm;
    }

    //装载警报器
    public void load(Alarm alarm) {
        this.alarm = alarm;
    }
}

class Person {
    
    private String name;//姓名

    public Person(String name) {
        this.name = name;
    }

    //人触碰到摩托车, 同时摩托车上的报警器发出响声
    public void touch(Moto moto) {
        moto.getAlarm().beep();
    }
}

http://www.verejava.com/?id=16992876520663

目录
相关文章
|
29天前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
25 1
|
2月前
|
JavaScript 前端开发 Java
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。如果你从我的文章中受益,欢迎关注我,我将持续更新更多优质内容。你的支持是我前进的动力!🎉🎉🎉
25 0
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
|
2月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
45 2
|
4月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
4月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
39 4
|
4月前
|
Java
接口和抽象类【Java面向对象知识回顾②】
本文讨论了Java中抽象类和接口的概念与区别。抽象类是不能被实例化的类,可以包含抽象和非抽象方法,常用作其他类的基类。接口是一种纯抽象类型,只包含抽象方法和常量,不能被实例化,且实现接口的类必须实现接口中定义的所有方法。文章还比较了抽象类和接口在实现方式、方法类型、成员变量、构造方法和访问修饰符等方面的不同,并探讨了它们的使用场景。
接口和抽象类【Java面向对象知识回顾②】
|
3月前
|
存储 Java 程序员
Java基础-面向对象
Java基础-面向对象
30 0
|
5月前
|
Java 数据处理 开发者
【Java基础面试十二】、说一说你对面向对象的理解
这篇文章阐述了面向对象是一种以类和对象为基础,通过封装、继承和多态等概念来模拟现实世界中的事物及其相互关系的程序设计方法,它强调以事物为中心进行思考和系统构造,与结构化程序设计相比,更符合人类的自然思维方式。
【Java基础面试十二】、说一说你对面向对象的理解
|
5月前
|
Java
【Java基础面试十三】、面向对象的三大特征是什么?
这篇文章介绍了面向对象程序设计的三大基本特征:封装、继承和多态,其中封装隐藏对象实现细节,继承实现软件复用,多态允许子类对象表现出不同的行为特征。
【Java基础面试十三】、面向对象的三大特征是什么?
|
4月前
|
安全 Java Go
面向对象程序设计语言:Java
Java语言语法和C语言和C++语言很接近,很容易学习和使用,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的特性,Java语言不使用指针,而是引用,并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧
81 2