一, 不能创建对象的类
抽象类(abstract)不能创建对象。这个大家应该都知道,所以在这里就不班门弄斧了。
简单回顾需要注意的几点:
- 包含抽象方法的类,必须声明为抽象类。
- 声明为抽象类的类,不一定非要包含抽象方法。
- 抽象类包含具体数据和具体方法。
- 抽象类不能创建对象,但可以定义对象变量,来引用非抽象子类的对象
Persion p=new Student();//其中Persion是抽象类,p是对象变量,Student是实现了Persion中所有抽象方法的非抽象之类。
之所以强调非抽象子类,是因为扩展(即继承)抽象类的子类有两种类型:
(1)子类还是抽象类:实现了部分抽象方法或没实现任何抽象方法;
(2)非抽象子类:实现了抽象类的全部抽象方法
OK,以上是当做复习吧。但是那些类不需要创建对象,为什么不需要对象呢?
二,不需要创建对象的类
java.lang.Math类。它没有数据域(属性),只封装了功能(行为)。所有的方法都是静态的,即方法是属于类的不需要调用对象类可以直接调用。
其他角度来看,对象的三要素:状态(即数据域值的集合),行为(可以对对象施加的操作),标识(用来辨别具有相同行为和相同状态的对象)。没有数据域,也就是没有状态,都不满足对象三要素,故没必要创建对象,在说假如创建了对象,你的方法去操作谁呢,他就没有数据域。
思考题也是求助?那些方法不能被覆盖(重写)呢??