快速业务通道

面向Java开发人员的Scala指南 - 实现继承 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
ng value)    {      this.firstName = value;    }    public String getLastName()    {      return this.lastName;    }    public void setLastName(String value)    {      this.lastName = value;    }    public int getAge()    {      return this.age;    }    public void setAge(int value)    {      this.age = value;    }    public String toString()    {      return "[Person: firstName" + firstName + " lastName:" + lastName +        " age:" + age + " ]";    }    private String firstName;    private String lastName;    private int age; }

面向Java开发人员的Scala指南 - 实现继承(7)

时间:2011-01-30 IBM Ted Neward

在编译 ScalaJavaPerson 时,它将照常扩展 JavaPerson,但按照 Scala 的要求,它还会实现 ScalaObject 接口。并照例支持继承自 JavaPerson 的方法,因为 ScalaJavaPerson 是一种 Scala 类型,我们可以期望它支持 Any 引用的指派,根据 Scala 的规则:

清单 14. 使用 ScalaJavaPerson

// This is Scala val richard = new ScalaJavaPerson("Richard", "Campbell", 45) System.out.println(richard) val host : Any = richard System.out.println(host)

但在 Scala 中创建 JavaPerson 并将其指派给 Any 引用时会发生什么?

清单 15. 使用 JavaPerson

// This is Scala val carl = new JavaPerson("Carl", "Franklin", 35) System.out.println(carl) val host2 : Any = carl System.out.println(host2)

结果显示,这段代码如期编译并运行,因为 Scala 能确保 JavaPerson “做正确的事情”,这要归功于 Any 类型与 java.lang.Object 类型的相似性。实际上,几乎可以说,所有扩展 java.lang.Object 的内容都支持存储到 Any 引用之中。(存在一些极端情况,我听说过,但我自己还从未遇到过这样的极端情况。)

最终结果?出于实践的目的,我们可以跨 Java 语言和 Scala 混搭继承,而无需过分担心。(最大的麻烦将是试图了解如何覆盖 “名字很有趣的 Scala 方法”,例如 ^=!# 或类似方法。)

结束语

在本月的文章中,我为您介绍了 Scala 代码和 Java 代码之间的高度相似性意味着 Java 开发人员可以轻松理解并使用 Scala 的继承模型。方法覆盖的工作方式相同,成员可见性的工作方式相同,还有更多相同的地方。对于 Scala 中的所有功能,继承或许与 Java 开发中的对应部分最为相似。惟一需要技巧的部分就是 Scala 语法,这有着明显的差异。

习惯两种语言中继承方法的相似之处和细微的差异,您就可以轻松编写您自己的 Java 程序的 Scala 实现。例如,考虑流行的 Java 基类和框架的 Scala 实现,如 JUnit、Servlets、Swing 或 SWT。实际上,Scala 团队已经提供了一个 Swing 应用程序,名为 OOPScala(参见 参考资料),它使用 JTable,通过相当少的几行代码(数量级远远低于传统 Java 的对应实现)提供了简单的电子表格功能。

因此,如果您想知道如何在您的生产代码中应用 Scala,就应该准备好迈出探索的第一步。考虑在 Scala 中编写下一个程序的一小部分。正如您在这期文章中所了解到的那样,从恰当的基类继承,采用与 Java 程序中相同的方式提供覆盖,您就不会遇到任何麻烦。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号