A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zrq523233 初级黑马   /  2012-8-23 23:21  /  2180 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如果一个类中有抽象方法,那么必须将该类定义成抽象类。抽象类的子类必须实现所有的抽象方法,那么抽象类中能否没有抽象方法?如果没有抽象方法是用abstract声明该类是否还算是抽象类?

点评

请通过板块上方的改名通道改名,以免影响加分。  发表于 2012-8-24 09:02

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1

查看全部评分

5 个回复

倒序浏览
抽象类可以有非抽象方法。也可以定义成员变量。接口就不能这样了,接口定义的只能是抽象方法,不能定义变量,只能定义常量。

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

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1

查看全部评分

回复 使用道具 举报
抽象类中淡然可以没有抽象方法,不管类中有没有抽象方法,只要abstract关键字修饰了类,那么该类就是抽象类。如果抽象类中没有抽象方法,这样写只有一个目的:就是不让其他的类实例化该抽象类并调用它

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1

查看全部评分

回复 使用道具 举报
含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象。
含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。
abstract class类中定义抽象方法必须在具体子类中实现,所以,不能有抽象构造方法或抽象静态方法。
如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。
如果仅仅是在一个类前加上abstract修饰符,说明这个类不能创建实例对象.
回复 使用道具 举报
如果没有抽象方法,定义抽象类干嘛呢?{:soso_e144:}
回复 使用道具 举报
可以,但是没有意义
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马