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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孟江 中级黑马   /  2013-6-6 21:01  /  1699 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孟江 于 2013-6-8 11:05 编辑

为什么final关键字不能修饰构造函数

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

9 个回复

倒序浏览
final:是用于声明属性、方法和类的,分别表示属性不可变,方法不可覆盖,类不可继承。
在构造函数上使用final修饰,你是想达到什么效果呢?final作用在方法上是不可覆盖的意思,但是构造函数,本来就不会被覆盖的,子类继承的只是成员变量和成员方法,构造函数不能被子类继承。所以,在构造函数上用final修饰不没必要的,编译器也会报错!

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1

查看全部评分

回复 使用道具 举报
final修饰类表示类不能被继承,修饰方法表示方法不能被重写,修饰属性表示属性必须且只能赋一次值,final不能修饰构造方法,因为对于构造方法不存在重写的问题;
构造方法严格意义上来讲就不能算作是方法,因为他的名字必须跟类名相同,更重要的是他根本就没有返回值类型,连void都没有,这不符合重写的规则;
重写要求:重写方法时必须保证:1,子类和父类中的方法在函数类型、函数名、参数表列上保持一致(即方法头);
2,重写方法时,不能使用比父类中被重写的方法更严格的访问权限;
3,重写方法不允许声明抛出比被重写方法范围更大的异常类型;

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 很给力!

查看全部评分

回复 使用道具 举报
final可以修饰类、方法等,修饰类是最终类,就是不可以被继承,但是类还可以new对象,如果构造函数也可以被final,那就表示构造函数也是最终的,那还可以new对象么,我的理解也不知道解释的合理么

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
final修饰的表示最终。 构造函数可能会有重载发生,怎么可以final修饰呢。(不知道对不对)

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
构造函数不能用final用修饰,你要是不想别人用构造函数可以用private来修饰构造函数,这个其实就是java的语法,构造函数可以重载,构造函数的作用其实就是一个建造机器,从他的英文名称也能看出了,对象建立时首先加载构造函数就是要成立一个建造机器,然后再操作,大概就是这个意思,

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
不懂得,学习了!!!
回复 使用道具 举报
加油!!
回复 使用道具 举报
谢谢大家的解答,现在有点头绪了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马