本文内容:
- 抽象类
- 接口
- 抽象类与接口的异同
抽象类:
-
虽然已经有了父类,但有时候父类也是无法直接描述某些共有属性的,比如哺乳类和人类都会叫,而一般来说哺乳类这个父类并没有准确定义“叫”的属性的,显然应该由子类来决定怎么“叫”,但“叫”这个属性是共有的,那么可以把这个属性抽象化(抽象则代表没有具体内容),由子类来实现具体内容。
-
普通类中无法定义抽象方法,所以定义了抽象类。
-
由于抽象方法子类是必须重写的,不然会运行失败,所以可以确保子类重写抽象方法。
-
抽象类可以有抽象方法,也可以没有抽象方法(没有抽象方法的抽象类),没有抽象方法时,子类继承不需要覆盖方法。
-
抽象类不可以实例化,不能用new关键字创建对象。
-
只有子类覆盖所有的抽象方法后,子类具体化,子类就可以创建对象。如果没有覆盖所有的抽象方法,子类还是抽象类。
-
抽象方法一定定义在抽象类中,都需要abstract来修饰。抽象方法只允许声明,不允许定义。故此不能有大括号。抽象方法也不允许用final修饰。
-
抽象类的定义格式:
-
抽象方法的定义格式: