接口语法:public interface 接口名{
}

抽象类语法:访问权限修饰符 abstract class 类名{ }

public abstract class Person{
}

接口:

接口中只能定义静态常量,所有的属性默认添加public static final

接口中只能定义抽象方法,abstract关键字可以省略。定义接口可写可不写abstract

接口只能用public和default修饰。

接口不能对象实例化,不能创建对象。

接口可以作为引用,指向实现类,只能调用接口中的方法,不能调用实现类特有的方法。

抽象类和抽象方法的关系:

抽象类里可以没有抽象方法,就是说所有方法都是普通方法。

抽象方法所在的类必须是抽象类。

抽象类不能对象实例化,不能通过关键new 抽象类名();

抽象类的方法需要子类重写,如果子类不重写父类抽象方法,相当于继承了父类的抽象方法,那么子类也必须是抽象类。

接口和抽象类区别

1.

接口声明时用interface,abstract可写可不写,可以有多个父接口。

抽象类声明时用class,abstract必须写,只能有一个父类。

2.

接口中的属性默认public static final修饰。

抽象类中属性默认是default修饰。

3.

接口中不能写构造函数。(构造函数在创建对象时调用,接口不能创建对象,接口的子接口不能创建对象,接口的实现类不会调用接口的构造方法,所以不用写构造函数)。

抽象类中可以写构造函数。(抽象类不能创建对象不调用构造函数,但是抽象类的子类调用父类的构造函数,抽象类做父类可以写构造函数供子类调用。

4.

接口中只能有抽象方法,abstract可写可不写。不能有普通方法。

抽象类中可以有抽象方法,abstract必须写。也可以没有抽象方法,全是普通方法。

5.

接口中定义的是多个无关类的抽象方法。

抽象类中定义的同一类有父子关系的抽象方法。