Java 面向对象 之 匿名内部类 实例 2

简介:

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

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

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

    思路:
        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 摩托车被人碰到 Moto{touched(Person p)}
            4.3 警报器发出响声 Alarm{beep()}

*/

public class TestMoto3 {
    
    public static void main(String[] args) {
        //准备生产一台南方摩托车
        Moto moto = new Moto("南方");

        moto.load(new Alarm() {
            public void beep(Person p) {
                System.out.println(p.getName() + " 碰到了警报器 ");
            }
        });

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

abstract class Alarm {
    //报警器能发出报警声
    public abstract void beep(Person p);
}

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

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

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

    //摩托车被人碰到
    public void touched(Person p) {
        alarm.beep(p);
    }
}

class Person {
    
    private String name;//姓名

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

    public String getName() {
        return this.name;
    }

}

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

目录
相关文章
|
3月前
|
Java
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
文章详细解释了Java关键字`super`的用途,包括访问父类的成员变量、调用父类的构造方法和方法,并提供了相应的代码实例。
201 5
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
|
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
|
3月前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
4月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
3月前
|
存储 Java 数据安全/隐私保护
Java中的域,什么是域?计算机语言中的域是什么?(有代码实例)
文章解释了Java中域的概念,包括实例域、静态域、常量域和局部域,以及它们的特点和使用场景。
90 2
|
3月前
|
Java
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
本文介绍了Java中this和super关键字的用法,包括在构造方法中使用this来区分参数和成员变量、使用super调用父类构造方法和方法,以及它们在同一个方法中同时使用的场景。
160 0
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
|
3月前
|
Java
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
这篇文章详细解释了Java中static和final关键字的用法,包括它们修饰类、方法、变量和代码块时的行为,并通过代码示例展示了它们的具体应用。
271 0
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
|
4月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
39 4