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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一诺千金 中级黑马   /  2014-3-3 17:24  /  2000 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

抽象类可以北Final修饰吗?

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

16 个回复

倒序浏览
必须不可以啊。。修饰了怎么继承呢,定义这个抽象类貌似就没有什么意义了

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
final最终修饰了,已经不能更改了,那抽象类里定义的功能也不能修改了,那么子类无法继承抽象类然后实现其中的方法,这个抽象类也就没有意义了。所以不能。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
那抽象类可以继承肥抽象类吗?
回复 使用道具 举报
那如何继承呢  这个永远只能抽象的类 有何用
回复 使用道具 举报
可以,但是这个类就没意义了,是不是这个意思?
回复 使用道具 举报
乔青山 发表于 2014-3-3 18:08
可以,但是这个类就没意义了,是不是这个意思?

貌似,面试的人就是想要这样的答案吧
回复 使用道具 举报
final关键字的作用是阻止某些类定义子类,以确保它们不会在子类中改变语义。
而抽象类是将子类中的成员向上抽取形成更高层次的通用超类。
两者是相互矛盾的,一个是阻止继承,一个就是相对继承才能成立的。

扩展抽象类可以有两种选择:一种是在子类中定义部分抽象方法或抽象方法也不定义,这样就必须将子类也标记为抽象类;另外一种是定义全部的抽象方法,这样一来,子类就是抽象的了。
所以抽象类可以继承抽象类。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
另外一种是定义全部的抽象方法,这样一来,子类就不是抽象的了。
回复 使用道具 举报
不可以啊,如果用final修饰了就没有子类了,那么函数中定义的抽象方法还有什么意义。
回复 使用道具 举报
final类并不多有String类是final的
final类都有哪些可以自己查一查然后记住,我面试的时候有考到这个问题的

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
一诺千金 发表于 2014-3-3 18:20
貌似,面试的人就是想要这样的答案吧

写在类前面不会报错,但是这个类就没意义了。所以说到底可不可以,可以呗。
回复 使用道具 举报
肯定不行啊,两者要求矛盾了
回复 使用道具 举报
这个应该是不能的
回复 使用道具 举报
java基础里面的,你看看final那块吧,不可以修饰抽象类,final修饰的都不可以被改变,而接口里面的抽象方法用的时候必须要被重写的,你用final修饰,还怎么用接口

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
这个明显的不可以啊,抽象类是一类事物的共性,可以让子类继承得以实现具体方法,而final是不让子类访问重写,明显冲突!
回复 使用道具 举报
不可以,抽象类的主要作用就是让子类去继承并覆写类中的抽象方法。如果被final修饰的话,该类就不可以被继承,那抽象类就没有意义了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马