黑马程序员技术交流社区

标题: 关于抽象类 [打印本页]

作者: zrq523233    时间: 2012-8-23 23:21
标题: 关于抽象类
如果一个类中有抽象方法,那么必须将该类定义成抽象类。抽象类的子类必须实现所有的抽象方法,那么抽象类中能否没有抽象方法?如果没有抽象方法是用abstract声明该类是否还算是抽象类?

作者: 刘芮铭    时间: 2012-8-23 23:33
抽象类可以有非抽象方法。也可以定义成员变量。接口就不能这样了,接口定义的只能是抽象方法,不能定义变量,只能定义常量。

例如:查阅API文档可知:
FilterReader就是一个没有抽象方法的抽象类,里面的每个方法都是转调用构造函数传入Reader对象的方法.这种抽象类你不能实例化它,因为实例化它没意义,它还没实现任何Filter的功能.在extends字的具体子类实现了Filter功能,实例化相应的子类才有实际意义.

作者: 黑马王建伟    时间: 2012-8-23 23:38
抽象类中淡然可以没有抽象方法,不管类中有没有抽象方法,只要abstract关键字修饰了类,那么该类就是抽象类。如果抽象类中没有抽象方法,这样写只有一个目的:就是不让其他的类实例化该抽象类并调用它
作者: 李敬    时间: 2012-8-24 03:26
含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象。
含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。
abstract class类中定义抽象方法必须在具体子类中实现,所以,不能有抽象构造方法或抽象静态方法。
如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。
如果仅仅是在一个类前加上abstract修饰符,说明这个类不能创建实例对象.
作者: 高薇    时间: 2012-8-24 06:27
如果没有抽象方法,定义抽象类干嘛呢?{:soso_e144:}
作者: 贾飞雨    时间: 2012-8-24 11:23
可以,但是没有意义




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2