1、抽象类与接口的区别:
抽象类是抽象了类与类之间的共同特征:得到的抽象类,无法创建对象进行实例化,但是可以被继承。抽象类属于基本数据类型,因此可以作为一种数据类型,也就是是说被继承后,抽象类可以作为引用的数据类型,引入多态机制。
接口是一种抽象类:接口中得所有方法都没有方法体,接口是可实现的,也可以继承,关键字是implements和extends。

2、抽象类的定义:

3、final与abstract绝对不能同时使用,因为abstract类如果被fianl意味着这个类不能被继承,不能继承,又不能创建新的对象,这时抽象类就没有了意义。

4、抽象类的子类可以是抽象类,也就是说抽象类可以继承抽象类。
5、抽象类无法实例化,但是有构造方法,这个方法是供子类使用的,与接口不同,抽象类里的方法可以有方法体。子类调用父类构造方法的方法是super();方法
6、abstract修饰的方法:
没有方法体,以;结尾,没有实现的方法例如public abstract void dosome();这种方法只是为了被重写而存在。
注意抽象类中不一定全都是抽象方法,但是抽象方法一定在方法体中。
7、普通子类继承抽象父类时必须重写或覆盖所有的抽象方法
因为普通子类中的方法是必须有方法体的,所以如果继承了抽象父类,这些方法也成了子类的方法,如果不重写,那么必然会报错。

8、接口的定义
接口是一种基本数据类型,接口完全抽象,也就是说接口的所有的方法都是抽象的,接口的定义:
修饰符列表 interface 接口名
{
}

10、接口支持多继承,一个接口可以继承多个接口
语法格式是:interface A extends B,C
{
}
11、接口中的所有元素都是public修饰的,但是可以省略public,也即是说即使没有写public abstract,但是接口中的所有方法都是公开的抽象的方法。
12、接口中的常量:接口中public static final 修饰符也可以省略,因此接口中的所有变量都是常量。
13、接口中的方法不能有方法体
14、非抽象类实现方法时,必须实现所有的方法。
15、接口的基础语法:
类与类叫继承,类与接口叫实现,接口与接口又叫继承,注意抽象类也可以继承接口,如果不是抽象类,那么必须重写所有的方法。一个类可以实现多个接口,这弥补了java类与类之间的单继承带来的缺陷。
一个类可以同时实现多个接口,则接口引用之间可以进行强转,向下转型时,可以使用instance of来判断是否是一个东西。
使用接口写代码时应该尽量用多态。

16、继承和实现同时出现时怎么办
继承和实现同时出现时要extends关键字在前,implements关键字在后。
class Cat extends Animal implements Flyable
{
}

17、接口在开发中的作用:
实现面向抽象变成而不是面向具体编程,这样可以提高程序的可扩展力,并降低程序的耦合度。
接口离不开多态。借口可以解耦合,调用者和实现者的耦合。

18、类型与类型之间的关系
1、is a关系:
这种关系表示继承关系
class cat extends Animal
{
}
2、has a关系:
这种关系表示关联关系,关联关系通常以属性的方式存在:
3、like a关系:
这种关系表示实现关系,实现关系通常是类实现接口:
19、抽象类与接口的区别
1、抽象类不是所有的函数都是抽象的,且有构造函数,但是接口没有构造函数;
2、接口可以多继承,但是类与类只能单继承
3、一个类能实现多个接口,但是只能继承一个类
4、接口中只允许出现常量和抽象方法(public和 final和abstract 关键字可以省略),但是类 里可以出现变量和普通方法

