面向Java开发人员的Scala指南 - 实现继承 - 编程入门网
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
但在 Scala 中创建 JavaPerson 并将其指派给 Any 引用时会发生什么? 清单 15. 使用 JavaPerson
结果显示,这段代码如期编译并运行,因为 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |