黑马程序员技术交流社区

标题: abstract与final的问题 [打印本页]

作者: 韩金蕊    时间: 2012-1-9 15:49
标题: abstract与final的问题
本帖最后由 韩金蕊 于 2012-1-9 21:22 编辑

abstract与final两个修饰符是否可以同时修饰一个类或成员方法?
作者: 朱泽宇    时间: 2012-1-9 15:56
final 在修饰一个类的时候是指定该类被能不继承。
abstract 在修饰一个类时,则指定,如何使用该类,则需要该类有实现类。
这两个关键字是矛盾的,一个指定不能继承,一个指定需要实现。
作者: 赵玮    时间: 2012-1-9 16:09
不能
因为abstract类自身没有具体的对象,需要派生出子类后再创建子类的对象。
而final类不可能有子类。
作者: 靖美专    时间: 2012-1-9 16:57
abstract抽象类,需要继承,而final定义的类不能继承,所以final 和 abstract 不能同时修饰一个类。
作者: 代臣    时间: 2012-1-9 17:11
不可以。你可以编一段程序试下,会报错:
1.abstract和final是非法的修饰组合
2.无法从最终类进行继承
原因:
对类来说:
你创建个类用abstract修饰了,本来可以被子类通过复写其方法的方式
继承并使用的,但是你又用final修饰了,就不能被继承了,与前面子类
通过复写父类的方法继承父类岂不是矛盾了?!所以肯定是错误的。
对于成员方法:
如果是子类不再被继承的话,倒没什么大碍;
如果是父类或者子类还会被继承的话,几乎相同的解释,首先abstract
和final是非法的修饰组合,错误1;
类用abstract修饰了,本可以被子类通过复写其方法的方式
继承并使用,被final修饰的方法不可以被复写。
作者: 袁野    时间: 2012-1-10 13:01

(1)Abstract修饰符表示所修饰的类是抽象类(是不完整的 必须通过子类去实现)
(2)final 单词是意思最终的; 所以被修饰的是最终类 不可以被继承。
(3) 所以一个类 不可以同时为(Abstract,final);
        剩下的你懂得?
作者: 袁野    时间: 2012-1-10 13:02

(1)Abstract修饰符表示所修饰的类是抽象类(是不完整的 必须通过子类去实现)
(2)final 单词是意思最终的; 所以被修饰的是最终类 不可以被继承。
(3) 所以一个类 不可以同时为(Abstract,final);
        剩下的你懂得?
作者: 陈思伟    时间: 2015-3-2 17:05
学习了,刚遇到问题




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