匿名内部类
java多线程中实现多线程的方式有两种①extends Thread ②implements Runnable。这两种情况是我们最常见的,还有一种是由第二种变形而来的直接new Runnable(){},我们都知道java的接口是不可以实例化的,但代码中的new Runnable(){xxx}确是实例化了,为什么? 接口和抽象类不可以实例化是对的,这个是java语法规范来的,而new Runnable(){}其实不是实例化Runnable接口来的,实际上一种内部类的一种简写 在这里:
①首先构造了一个”implements Runnable “的无名local内部类(方法内的内部类)
②然后构造了这个无名local内部类的一个实例
③然后用Runnable来表示这个无名local内部类的type(OO多态)。
类之间的关系
USES-A:依赖关系,A类用到B类,这种具有偶然性,临时性。B类的变化影响A类。在代码中体现为:A类方法中的参数包含了B类。
HAS-A:聚合关系,拥有关系,关联关系的一种特例,整体和部分的关系。比如鸟群和鸟的关系,鸟群每个部分都是鸟。
IS-A:表示继承。父类与子类。