抽象类
在面向对象的概念中一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是用来描述对象的。如果一个类没有足够的信息来描述一个具体的对象,而需要其它具体的实现类来支撑它,那么这样的类就称为抽象类。
抽象类体现了数据抽象的思想,是实现多态的一种机制。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。
在使用抽象类时需要注意几点:
1)抽象类不能被实例化,实例化的工作应该交由它的实现类来完成,它只需要有一个引用即可。
2)抽象类中的子类必须通过重写来实现它的所有抽象方法,除非子类也定义成抽象类。
3)一个类只要包含一个抽象方法,那么该类必须要定义成抽象类。
4)抽象类中可以包含具体的方法。
5)抽象类中可以不包含抽象方法。
6)抽象类不能用final或static来修饰,因为它必须被继承。
抽象方法
如果你想设计这样一个类,该类包含一个特别的成员方法,该方法的具体实现由它的子类确定,那么你可以在父类中声明该方法为抽象方法。使用abstract关键字来声明抽象方法,抽象方法只包含一个方法名,而没有方法体。
public abstract float price();
因为抽象方法没有定义,所以没有花括号。
声明抽象方法会造成以下两个结果:
1、如果一个类包含抽象方法,那么该类必须是抽象类。
2、任何子类必须重写父类的抽象方法,或者声明自身为抽象类。