Java 面向对象 之 匿名内部类-阿里云开发者社区

开发者社区> verejava> 正文

Java 面向对象 之 匿名内部类

简介:
+关注继续查看

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

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

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

    思路:
        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 TestMoto {
    
    public static void main(String[] args) {
        //准备生产一台南方摩托车
        Moto moto = new Moto("南方");
        //摩托车上预装一台 小功率的 报警器
        moto.load(new SmallAlarm());

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

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

class SmallAlarm implements Alarm {

    //报警器发出响声
    public void beep() {
        System.out.println("有人碰到我了,可能偷摩托");
    }

}

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=16992872428362

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
java基础之:匿名内部类
在java提高篇-----详解内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客。在这篇博客中你可以 了解到匿名内部类的使用、匿名内部类要注意的事项、如何初始化匿名内部类、匿名内部类使用的形参为何要为final。
816 0
Java面向对象高级--匿名内部类
<h1>1、匿名内部类的定义</h1> <p>内部类:在一个类中,还有另外一个类称为内部类。</p> <p>匿名内部类:如果一个类在整个操作中只使用一次的话,就可以将其定义为匿名内部类。匿名内部类实在抽象类和接口的基础上发展起来的。</p> <p></p> <pre name="code" class="java">interface A{ public void printIn
842 0
Java中的匿名对象
//Java中的匿名对象: //匿名对象就是没有名字的对象 class Student{ public void tell(){ System.out.println("Hello World"); } } public class HelloWorld { public static...
501 0
Java入门 - 面向对象 - 04.抽象类
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。 父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。 在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。
153 0
Java面向对象高级--instanceof关键字
<p><span style="font-size:14px">可以使用instanceof关键字判断一个对象到底是那个类的实例。</span></p> <p><span style="font-size:14px"><img src="http://img.blog.csdn.net/20130926164458656" alt=""><br></span></p> <p></p>
865 0
《21天学通Java(第6版)》—— 1.3 对象和类
面向对象编程是基于现实世界的情况进行建模的,对象由多种更小的对象构成。
1271 0
Java中类的创建及类与对象的关系
//import java.util.Scanner; //创建一个类 class Person{ //属性和方法的定义不是必须的 //属性 String name ; int age ; //方法 public void tell(){ System.
841 0
Java面向对象高级--对象的多态性
<p><img src="http://img.blog.csdn.net/20130926155033406" alt=""></p> <h1>向上转型:通过子类进行父类对象实例化操作。如果调用的方法被子类覆写过,则肯定调用被覆写过的方法。注意:转型之后,因为操作的是父类对象,所以无法找到子类中定义的新方法。</h1> <p></p> <pre name="code" class=
1065 0
Java面向对象高级--包装类
<h1>1、包装类的介绍</h1> <div> <img src="http://img.blog.csdn.net/20131008094901515" alt=""><br> </div> <div> <img src="http://img.blog.csdn.net/20131008094954921" alt=""><br> </div> <div>这八种包装类,继承的父类
1057 0
+关注
verejava
15 年软件和互联网研发经验, 架构师,喜爱编程 , 旅游,读书
99
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载