JAVA更多的类谜题72:终极危难.docx

上传人:ni****g 文档编号:547900899 上传时间:2022-12-28 格式:DOCX 页数:3 大小:12.65KB
返回 下载 相关 举报
JAVA更多的类谜题72:终极危难.docx_第1页
第1页 / 共3页
JAVA更多的类谜题72:终极危难.docx_第2页
第2页 / 共3页
JAVA更多的类谜题72:终极危难.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《JAVA更多的类谜题72:终极危难.docx》由会员分享,可在线阅读,更多相关《JAVA更多的类谜题72:终极危难.docx(3页珍藏版)》请在金锄头文库上搜索。

1、 JAVA更多的类谜题72:终极危难class Jeopardy public static final String PRIZE = “$64,000“; public class DoubleJeopardy extends Jeopardy public static final String PRIZE = “2 cents“; public static void main(String args) System.out.println(DoubleJeopardy.PRIZE); 由于在Jeopardy中的PRIZE域被声明为是public和final的,你可能会认为Java语言将

2、阻挡你在子类中重用该域名。究竟,final类型的方法不能被覆写或隐蔽。假如你尝试着运行该程序,就会发觉它可以毫无问题地通过编译,并且将打印2 cents。出什么错了呢? 可以证明,final修饰符对方法和域而言,意味着某些完全不同的事情。对于方法,final意味着该方法不能被覆写(对实例方法而言)或者隐蔽(对静态方法而言)JLS 8.4.3.3。对于域,final意味着该域不能被赋值超过一次JLS 8.3.1.2。关键字一样,但是其行为却完全不相关。在该程序中,final域DoubleJeopardy.PRIZE隐蔽了final域Jeopardy.PRIZE,其净损失到达了$63,999.98

3、。尽管我们可以隐蔽一个域,但是通常这都是一个不好的念头。就像我们在谜题66中所争论的,隐蔽域可能会违反包涵性,并且会混淆我们对类型与其成员之间的关系所产生的直觉。假如你想保证在Jeopardy类中的奖金可以保存到子类中,那么你应当用一个final方法来代替final域:class Jeopardy private static final String PRIZE = “$64,000“; public static final String prize() return PRIZE; 对语言设计者来说,其教训是应当避开在不相关的概念之间重用关键字。一个关键字应当只在亲密相关的概念之间重用,这样可以帮忙程序员构建关于易混淆的语言特性之间的关系的印象。在Java的final关键字这一案例中,重用就导致了混乱。应当留意的是,作为一种有年头的语言来说,在无关的概念之间重用关键字是它的一种自然趋势,这样做可以避开引入新的关键字,而引入新的关键字会对语言的稳定性造成极大的损害。当语言设计者在考虑该怎么做时,总是在两害相权取其轻。 总之,要避开在无关的变量或无关的概念之间重用名字。对无关的概念使用有区分的名字有助于让读者和程序员区分这些概念。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 习题/试题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号