抽象类:抽象类更多的是用来定义一个很多东西的本质,即他是不是,如果我们可以声明一个抽象类annimal,然后新建一个cat类去继承它,通过重写annimal类的抽象方法,那么我们就能够拥有annimal类的特征了。
接口:接口与抽象类的定义其实差不多,但是究其本源,接口更多的是用来定义“能不能”的特性,比如我猫能吃饭,能够翻墙等。同时,接口中能够定义变量,但是变量是public static finnal 的类型,即静态常量,不能够修改,且必须赋初值。
抽象类与接口的区别:
1:抽象类只能够延续java单继承的特性,一个类只能继承一个类,但是一个类却能够继承多个接口。
2:抽象类中,可以有成员变量,也可以有非抽象的方法,但是在接口中,只能够有静态常量,而且方法也只能是抽象方法。
3:抽象类中可以如果被一个类继承,那个类如果没有重写所有的抽象方法,那么该类必须被声明为抽象类,而你如果继承一个接口,那么你必须实现其所有的方法。
4:接口中不能够声明static方法,抽象类可以