一、抽象类:
- 抽象类不能被实例化,也就是不能被"new"。
- 虽然不能被实例化,但是可以在这个类里面定义一些普通类一样的方法或者属性,可以被子类继承过去使用。
- 如果一个类继承了抽象类,那么这个类就必须重写抽象类中的抽象方法。
- 抽象类或者抽象方法一定不能被final关键字所修饰,否则的话就无法被继承或者重写。
- 虽然不能被实例化,但是仍然可以发生向上转型,也就是以抽象类类型的引用去指向它的子类的实例。
- 抽象类和抽象方法一般用abstract关键字修饰。
二、接口
接口是抽象类的更进一步,抽象类中还可以包含普通方法或者属性,而接口中只会包含抽象方法。
- 在接口中,所有的方法都是抽象方法。
- JDK1.8引入了接口中可以有普通方法,也就是有具体实现的方法,只不过需要用default关键字修饰。
- 接口中定义的属性默认是public static final int,也就是常量;方法默认是public abstract,也就是抽象方法。
- 接口也是不可以被实例化的
- 一个类只能继承一个类,但是确可以实现多个接口。
- 类实现接口通过implement关键字。
- 当一个类实现了一个接口,也必须要重写里面的抽象方法。