接口和抽象类有什么区别?

实现:抽象类的子类使用 extends 来继承;接口必须使用 implements 来实现接口。
构造函数:抽象类可以有构造函数;接口不能有。
实现数量:类可以实现很多个接口;但只能继承一个抽象类【java只支持单继承】。
访问修饰符:接口中的方法默认使用 public 修饰;抽象类中的抽象方法可以使用Public和Protected修饰,如果抽象方法修饰符为Private,则报错:The abstract method 方法名 in type Test can only set a visibility modifier, one of public or protected。

补充:

  1. 接口直接还可以进行继承,包括继承抽象类
  2. 抽象类就是把一大类对象的公共属性给抽取出来的一个载体,比如人都能走(非private),这个就可以抽出来一个抽象类,后面的男人类、女人类都可以继承这个,就都具备了走了属性,但是具体怎么走就需要定一个接口来继承抽象类(就像上面第一点),然后接口会有实现类进行实现说怎么走,是抬头挺胸走,还是低着头走就是接口的实现类来决定了