抽象类与接口:
抽象的定义:
抽象就是把多个事物的共性的内容抽取出来,
本质就是把我们关注的内容抽取出来(比如:宝马,
法拉利都是汽车,汽车就是我们抽象出来的概念)。
而汽车就是我们封装起来的一个类。
抽象类:
java可以定义没有方法体的方法
(也就是只有方法的声明,没有方法的实现),
该方法由其子类来具体的实现。
而没有方法体的方法我们称之为抽象方法,
含有抽象方法的类我们称之为抽象类。
抽象方法的特点:
1.抽象方法用abstract来修饰。
2.抽象方法代表一种不确定的操作或行为。
3.抽象方法不能被调用。
如:public abstract void work();(大括号不能有)
抽象类的特点:
1.抽象类不能实例化。
2.抽象类代表一种抽象的对象类型。
3.抽象类用abstract来修饰。
4.一旦一个类继承了抽象类,那么这个类要么实现抽象类中的抽象方法,
要么继续继承下去。
5.可以定义一个不含抽象方法的抽象类。
(即抽象类中可以有具体方法,可以没有抽象方法)
6.在抽象类的扩展的非抽象子类中,必须实现所有的抽象方法。
接口语法:
interface 接口名{
}
接口的特点:
1.接口只能存放静态常量和抽象方法。
2.java接口是对功能的扩展。
3.通过实现接口,java可以实现多实现。
4.一个类可以继承(extends)一个父类(也只能继承一个父类),并且实现(implements)多个接口。
5.接口与接口之间可以通过使用extends来产生继承关系。
接口与抽象类的区别:
1. 抽象类与具体实现类之间是一种继承关系(is-a),也就是说如果采用抽象类的方式,则父类与子类在概念上应该是相同的。
2. 接口和实现类在概念上不要求相同,接口只是抽取相互之间没有关系的类的共同特征,而不是去关注类之间的关系,它可以使没有层次关系的类具有相同的行为,即方法。
3. 抽象类是对一组具有相同属性和行为的**逻辑上有关系**的事物的一种抽象,而接口则是对一组具有相同属性和行为的**逻辑上不相关**的事物的一种抽象。
4. 抽象类用于一组相关的事物,表示的是“is-a”的关系;而接口用于一组不相关的事物,表示的是“like-a”的关系。