适配器:把多种不同的需求或请求代码,转换成统一的代码处理,便于维护
降低层和层之间的耦合性
抽象类和接口的相同点和不同点
相同点:
(1)抽象类、接口都不能创建对象
(2)抽象类、接口都有抽象方法
不同点:
(1)语法:抽象类abstract class ; 接口 interface;
(2)接口的属性static、final、public,接口属性显式赋值;
抽象类没规定;
(3)接口的所有方法public abstract;
抽象类没这个规定;
(4)接口无构造方法 ;抽象类一定要有;
(5)抽象类如果作为父类,则子类只能继承这一个抽象类,子类一定要重写抽象类的抽象方法,这种重写叫覆盖。调用构造方法,用抽象类的引用型变量指向继承抽象类的对象叫上转型。
一个子接口可以继承多个父接口,一个类和另一个接口之间的关系,用实现implements。一个类实现接口,并对所有方法的重写叫实现。用接口的引用型变量指向实现接口的类的对象叫接口的回调。
(6)语义:
抽象类:多态
接口:接口的回调
一个类继承了抽象类,说明有继承关系
(7)场合:
抽象类:用于多态的场合,单一继承。
接口:降低耦合性,多继承。
继承一个父类,实现多个接口。
内部类:
线程、匿名使用
内部类对象将自动拥有包含内部类对象的外部类对象的引用,此属性为外部类名.this
内部类的作用范围
在外部类的外部创建一个外部类的内部类的对象
先创建外部类对象,再通过外部类创建内部类对象(实例内部类)
外部类的方法(实例方法)创建内部类的对象,内部类的对象的类在外部类可以被识别
内部类可以定义成私有,不能在外部类的外部创建私有内部类,只能在外部类的方法(实例方法)创建私有内部类的对象。
一个类定义在另一个类的内部。这个类和另一个类是组成关系。
只在包含他的外部类有效
实例内部类(通过外部类对象来创建内部类对象,也就是自动拥有外部类对象的引用)
Outer1 a1=new Outer1();
Outer1.Inner oi=a1.new Inner();
只有通过创建对象才能创建实例内部类的对象
a1.new Inner( );
创建内部类对象
内部类有一个属性,自动拥有外部类对象的引用。名字叫
Out1.this,类型是outer1.Inner
外部类外部创建内部类对象,自动拥有外部类对象的引用。
outer1.Inner i=new Inner();
外部类中的方法创建内部类,Inner i=new Inner();
内部类私有,只能通过外部类的方法创建。
方法内部类
一个类定义在另一个类的方法里面,包含该内部类的方法的属性要是final类型
只能在方法里创建对象
只能在方法里使用对象
可以使用包含该内部类方法里面的final类型的局部变量
方法内部类自动拥有外部类对象的引用
内部类不是静态的,内部类的属性也不能是静态的,静态内部类不能访问外部类的非静态属性,非静态内部类属性不能定义成静态的。
静态方法,不传this