黑马程序员技术交流社区

标题: 方法的形参加入final修饰,表示什么? [打印本页]

作者: 王小忠    时间: 2014-11-19 19:20
标题: 方法的形参加入final修饰,表示什么?
本帖最后由 王小忠 于 2014-11-24 13:33 编辑

   有一个方法,如下:
                void fun(final  int  b){}
    请问这个方法还可以被重载吗?

作者: 青鱼    时间: 2014-11-19 19:28
本帖最后由 青鱼 于 2014-11-19 19:30 编辑

final 最终修饰符, 有三个用途

final 成员变量时:   代表常量, 不能再修改该常量的值,
        楼主的问题属于这种, 类可以被继承和方法重载,
       但不能修改 b 常量, 即传值进去后使用就可以了, 不能在方法内给 b 赋值;

final 方法时:  方法不可被重载, 也就是说可以有子类, 但子类不可以覆盖该方法;
final 类时:   类将不可以被继承

:hug:加油

作者: 王小忠    时间: 2014-11-19 19:44
那如果~~形参是对象呢?
比如:
void fun(final Person p){}
作者: DamonZh    时间: 2014-11-19 21:13
我觉得可以,这里修饰形参只是说明形参不能在函数内不能再次赋值。
作者: DamonZh    时间: 2014-11-19 21:15
王小忠 发表于 2014-11-19 19:44
那如果~~形参是对象呢?
比如:
void fun(final Person p){}

是对象也一样啊,就是说如果p指向了实参传进来的那个对象,那么p就不能再指向别的对象了
作者: yangyujoe    时间: 2014-11-19 22:04
青鱼 发表于 2014-11-19 19:28
final 最终修饰符, 有三个用途

final 成员变量时:   代表常量, 不能再修改该常量的值,

高手高手搞搞手
作者: 青鱼    时间: 2014-11-19 22:56
王小忠 发表于 2014-11-19 19:44
那如果~~形参是对象呢?
比如:
void fun(final Person p){}

:lol 楼主真有想法, 一样的啊, p 变量成为常量, p不可再被赋值, 也就是说 p 的对象不可以再更改为其它 person的另一个对象
作者: Quasimodo    时间: 2014-11-20 00:35
为了防止形参被恶意修改
作者: theking    时间: 2014-11-20 00:41
好问题!我也不清楚,我是来看大神解答的,受教了!
作者: 关军波    时间: 2014-11-20 07:59
重载只是方法内部的参数不一样,可以重载
作者: zhangyangLengen    时间: 2014-11-20 08:32
final修饰的问题:
    修饰变量,则变量不能被修改
    修饰方法:则方法不能被覆盖

作者: zhangyangLengen    时间: 2014-11-20 08:34
修饰类,类不能被继承




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