接口、抽象类和普通类的区别与联系
接口:可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。接口是解决Java无法使用多继承的一种手段,但是接口在实际中更多的作用是制定标准。接口必须使用 implements 来实现接口,接口不能有构造函数,接口中成员变量默认为 public static final 修饰,必须赋初值,不能被修改,其所有的成员方法默认使用 public abstract 修饰。
抽象类:拥有抽象方法(指没有方法体的方法,同时抽象方法还必须使用关键字abstract 做修饰)的类就是抽象类,抽象类要使用abstract关键字声明。抽象类也可以拥有非抽象的方法。抽象类的子类使用 extends 来继承,抽象类可以有构造函数。抽象类中成员变量默认 default,可在子类中被重新定义,也可被重新赋值,抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰
普通类:不能包含抽象方法,一个类只能继承一个抽象类,但可以实现多个接口。普通类可以直接实例化,抽象类不能直接实例化。