抽象类: 其实就是带有抽象方法的类(抽象方法没有方法体,用abstract的修饰)
public abstract void test(); //这就是抽象方法
抽象类的使用原则:
1. 抽象类不能被实例化,需要依靠子类采用向上转型的方式处理;
2. 抽象类必须有子类去继承,一个子类只能继承一个继承抽象类;
3. 抽象方法必须是public和protected(因为如果是private,则不能被子类继承,子类就不能实现此方法);
4. 如果子类继承了此抽象类,则子类必须要重写抽象类中的全部抽象方法(如果子类没有全部重写父类中的抽象方法,则子类也需要定义为abstract的)
5. 抽象类不能用final声明,因为抽象类必须有子类;
抽象类和接口的区别:
1. 抽象类里面可以有方法的实现,但是接口完全都是抽象的,不存在方法的实现;
2. 子类只能继承一个抽象类,而接口可以被多个实现;
3. 抽象方法可以是public,protected,但是接口只能是public,默认的;
4. 抽象类可以有构造器,而接口不能有构造器;