抽象类总结
抽象类的概念:是使用关键字abstract修饰的类就是抽象类;
抽象类的产生:当多个不能相互继承的类具有相同的功能时,就需要将共同的信息向上抽取,放到公共的父类中;如果公共的父类只能描述所有子类都具有的功能,但描述不清功能的具体实现,就需要将该函数定义为抽象的,使用关键字abstract修饰;如果一个类中出现了抽象的函数,说明这个类也是不具体的,应该定义为抽象类,使用abstract修饰;
抽象类的特点:
抽象类不能实例化;
抽象类中的抽象函数必须由子类去实现,否则子类也是抽象类;
抽象类也是一个类,类中可以书写所有成员,也可以没有抽象函数;
因为抽象函数必须由子类实现,所以不参与继承的(private)和不能被子类重写的(final)关键字不能和abstract共存;
因为静态函数不需要类的对象就可以直接使用,所以static关键字也不能和abstract共存;
如果一个类不希望被实例化,但又希望被子类继承,就可以定义为抽象的,即使类中没有抽象函数;
接口的作用总结
接口的声明格式:
interface Inter{}
接口中能书写的成员:
成员变量:全部都使用public static final 修饰;所以接口中的成员变量都是常量;
成员函数:全部都使用 public abstract 修饰;
接口中没有构造函数;
接口的细节:
接口不能实例化,只能被类实现;
实现接口的类必须实现接口的所有方法,否则实现类必须是抽象的;
接口与接口是继承的关系,一个接口可以继承多个接口;类和接口是实现的关系,一个类可以实现多个接口;
通常开发中使用接口类型的引用指向实现类的对象,这是多态的体现;
接口的作用:
描述非继承体系中的共性内容;
通过多态使用接口,可以提高程序的扩展性;
实现的java的多继承;
接口可以定义规则;
接口和抽象类的区别
1、从声明上:
- 抽象类是一个类,需要使用关键字:class声明
- 接口不是一个类,使用关键字:interface声明
2、从能够书写的成员上看:
- 抽象类可以书写类中的所有成员
- 接口中只能书写成员变量和抽象函数;(从JDK8开始,接口中可以有实现的函数)
3、从有无构造函数上看:
- 抽象类有构造函数,是给子类实例化对象使用的
- 接口没有构造函数
4、从作用上看:
- 抽象类是描述的继承体系中的共同的特征和行为,如果行为不确定,就定义为抽象函数;
- 接口描述的是不属于继承体系的共同的功能;接口可以用来定义规则;
5、继承关系上:
- 抽象类是一个类,只支持单一继承和多重继承;
- 接口和接口可以多继承和多重继承;接口和实现类可以多实现;
适配器小结
适配器的作用,就是适配、转换,将不符合使用要求的东西转换为符合使用要求的;
适配器设计模式,解决的是怎么将不符合使用要求的类、对象或接口转换为符合使用要求的;
根据适配的对象不同,可以将适配器分为类的适配、对象的适配和接口的适配;
接口的适配的步骤:
1、创建一个适配器类实现接口,在这个类中使用空实现实现接口中的所有抽象函数;
2、因为适配器类中的函数都是空实现的,创建该类的对象没有意义,所以要将适配器类定义为抽象类;
3、要使用适配器类,只需书写类继承适配器类即可;