抽象类
定义:抽象类前使用abstract关键字修饰,则该类为抽象类。
使用抽象类要注意以下几点:
1. 抽象类是约束子类必须有什么方法,而并不关注子类如何实现这些方法。
2. 抽象类应用场景:
a. 在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法(可实现动态多态)。
b. 从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免子类设计的随意性。
3. 抽象类定义抽象方法,只有声明,不需要实现。抽象方法没有方法体以分号结束,抽象方法必须用abstract关键字来修饰。如:
4、包含抽象方法的类是抽象类。抽象类中可以包含普通的方法,也可以没有抽象方法。如:
5、抽象类不能直接创建,可以定义引用变量来指向子类对象,来实现抽象方法。以上述的Telephone抽象类为例:
1 public abstract class Telephone { 2 public abstract void call();//抽象方法,方法体以分号结束,只有声明,不需要实现 3 public void message(){ 4 System.out.println("我是抽象类的普通方法"); 5 }//抽象类中包含普通的方法 6 }
1 public class Phone extends Telephone { 2 3 public void call() {//继承抽象类的子类必须重写抽象方法 4 // TODO Auto-generated method stub 5 System.out.println("我重写了抽象类的方法"); 6 } 7 8 }
以上是Telephone抽象类和子类Phone的定义,下面我们看main函数里:
运行结果(排错之后):