走上开放之路: .NET 开发人员的 J2EE 基础(上) - 编程入门网
s 以方便其他类复用。从 c:\javapack 目录运行以下命令:
jar -cvf Test.jar com jar 命令将创建一个名为 Test.jar 的文件,它包含 com 子目录下的所有类。 执行以下命令来使用 Test.jar 文件中的类: java -classpath Test.jar com.mycompany.test.Test 注意您必须使用完全限定的类名称来从命令行运行该命令,而且还要注意使用 -classpath 选项来指向 Test.jar 文件的方式。或者,您可以把 Test.jar 文件添加到 CLASSPATH 环境变量中,该变量是分号分隔的 JAR 文件列表,以及 Java 编译器和 Java 虚拟机(Java virtual machine,JVM)用来寻找需要加载的类的目录列表。 访问修饰符 访问修饰符 public 、 private 和 protected 在两种语言中的工作方式大部分都是相同的。在 C# 中,默认的访问权限是 private ;Java 语言中的默认行为是允许任何子类或相同包中的任何类访问当前类、字段或方法。这大致等价于 C# 中的 internal 关键字,该修饰符仅允许从相同程序集访问。 方法重载 C# 中的子类如果要重载父类中的某个方法: 该方法一定 不 能在父类中使用 private 访问修饰符(或没有访问修饰符)来声明。 该方法必须在父类中声明为 virtual 。 子类中的重载方法必须与父类中的方法具有相同的名称、返回类型和参数签名。 子类中的方法必须使用 Overrides 关键字来声明。(您也可以使用 new 关键字,但是一般不推荐这样做。) 父类中的方法一定 不 能声明为 sealed 。 Java 语言中方法重载的前提条件不太严格: 该方法一定 不 能在父类中使用 private 访问修饰符来声明。 子类中的方法必须与父类中的对应方法具有相同的名称、返回类型和参数签名。 父类中的方法一定 不 能声明为 final 。 这些区别的含义是,在 Java 代码中,子类中不可能包含与父类中的非私有方法具有相同名称和签名的方法而不会隐式地重载它。在 C# 中,您必须显式地指明何时想要重载父类中的方法。还要注意 Java 语言中的 final 关键字如何或多或少地等价于 C# 中的 sealed 关键字。 走上开放之路: .NET 开发人员的 J2EE 基础(上)(13)时间:2011-03-11 IBM David Carew异常处理 结构化的异常处理在两种语言中几乎完全相同。(两者都可以往后追溯到一份创始性的论文,即 Andrew Koenig 和 Bjarne Stroustrup 于 1990 年撰写的 Exception Handling for C++。) 两种语言都使用了两种异常概念:应用程序生成的异常,以及系统运行库(C# 的公共语言运行库,Java 语言的 JVM)生成的异常。两种语言都具有 Exception 基类,应用程序异常和系统异常都是由它派生而来的。 图 3 显示了两种语言中的 Exception 类层次。 图3. Java 语言和 C# 中的 Exception 类层次 然而,两种语言的编译器对您的代码如何处理异常具有不同的预期。在 C# 中,您可以选择捕获异常,或让它们沿调用堆栈向上传播到类的方法的调用者(和/或构造函数)。Java 语言允许同样的处理,但是对于未捕获的应用程序异常(也就是 java.lang.Exception 的子类),您必须显式地将它们作为方法声明的一部分来列出。因此 Java 编译器预期您或者自己捕获所有应用程序异常,或者告诉编译器关于未捕捉的异常的信息。例如,假设 Foo 类的构造函数可能抛出一个应用程序异常,那么清单 16 中的 C# 或 Java 代码对各自的编译器来说都不会有问题。 清单 16. 处理应用程序异常
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |