抽象类使用abstract关键字来定义,包含抽象方法,抽象方法只是对方法的声明,但是没有方法主体。
抽象类的特点:
1、抽象方法一定定义在抽象类中,都需要用abstract修饰;也就是说非抽象类内部不能定义抽象方法。但是抽象类也可以不定义抽象方法,这样的话这个类就不能创建对象了。
2、抽象类不能实例化,不能用new关键字创建对象
3、只有子类覆盖所有的抽象方法后,子类就可以创建对象;如果没有覆盖所有的抽象方法,那么子类还是一个抽象类,依旧不能实例化。
4、抽象类中的抽象方法只能有两种可见性修饰符修饰:public或protected
5、抽象类中一定有构造函数,只是不能用于本身实例化,它的构造函数可以在子类实例化对象是被调用但是不创建父类对象,仅做初始化参数使用。
接口是一种特殊的抽象类,当抽象类中所有的方法都是抽象方法的时候,就称之为接口。
接口的特点:
1、接口中常见的成员有两种:1.静态常量 public final修饰 2.抽象方法
2、java中不直接支持多继承,而是对该机制进行改良,将多继承转换成了多实现,避免调用不确定性的发生。一个类继承一个类的同时,还可以实现多个接口,避免了单继承的局限性。
3、类与类之间是继承关系 is a;类与接口之间是实现关系 like a