黑马程序员技术交流社区

标题: final关键字问题 [打印本页]

作者: 孟江    时间: 2013-6-6 21:01
标题: final关键字问题
本帖最后由 孟江 于 2013-6-8 11:05 编辑

为什么final关键字不能修饰构造函数
作者: 381946250    时间: 2013-6-6 21:38
final:是用于声明属性、方法和类的,分别表示属性不可变,方法不可覆盖,类不可继承。
在构造函数上使用final修饰,你是想达到什么效果呢?final作用在方法上是不可覆盖的意思,但是构造函数,本来就不会被覆盖的,子类继承的只是成员变量和成员方法,构造函数不能被子类继承。所以,在构造函数上用final修饰不没必要的,编译器也会报错!
作者: 蚂蚁搬家    时间: 2013-6-6 21:42
final修饰类表示类不能被继承,修饰方法表示方法不能被重写,修饰属性表示属性必须且只能赋一次值,final不能修饰构造方法,因为对于构造方法不存在重写的问题;
构造方法严格意义上来讲就不能算作是方法,因为他的名字必须跟类名相同,更重要的是他根本就没有返回值类型,连void都没有,这不符合重写的规则;
重写要求:重写方法时必须保证:1,子类和父类中的方法在函数类型、函数名、参数表列上保持一致(即方法头);
2,重写方法时,不能使用比父类中被重写的方法更严格的访问权限;
3,重写方法不允许声明抛出比被重写方法范围更大的异常类型;

作者: luckwei    时间: 2013-6-6 22:10
final可以修饰类、方法等,修饰类是最终类,就是不可以被继承,但是类还可以new对象,如果构造函数也可以被final,那就表示构造函数也是最终的,那还可以new对象么,我的理解也不知道解释的合理么
作者: ㄗs:/|丶hearts    时间: 2013-6-7 17:44
final修饰的表示最终。 构造函数可能会有重载发生,怎么可以final修饰呢。(不知道对不对)
作者: 郭向阳    时间: 2013-6-7 23:12
构造函数不能用final用修饰,你要是不想别人用构造函数可以用private来修饰构造函数,这个其实就是java的语法,构造函数可以重载,构造函数的作用其实就是一个建造机器,从他的英文名称也能看出了,对象建立时首先加载构造函数就是要成立一个建造机器,然后再操作,大概就是这个意思,
作者: 曹宇    时间: 2013-6-7 23:23
不懂得,学习了!!!
作者: 袁梦希    时间: 2013-6-8 07:34
加油!!
作者: 孟江    时间: 2013-6-8 11:05
谢谢大家的解答,现在有点头绪了




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