java学习入门到精通(非常好)_第1页
java学习入门到精通(非常好)_第2页
java学习入门到精通(非常好)_第3页
java学习入门到精通(非常好)_第4页
java学习入门到精通(非常好)_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java Learning Path (一)工具篇一、 JDK (Java Development Kit)JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual

2、 Machine)运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好。1、 JDK的下载和安装JDK又叫做J2SE(Java2 SDK Standard Edition),可以从Sun的Java网站上下载到, ,下载页面在这里:2、 JDK的命令工具JDK的最重要命令行工具:java: 启动JVM执行classjavac: Java编译器jar: Java打包工具javadoc: Java文档生成器这些命令行必须要非常非常熟悉,对于每个参数都要很精通才行。对于这些命

3、令的学习,JDK Documentation上有详细的文档。二、 JDK DocumentationDocumentation在JDK的下载页面也有下载连接,建议同时下载Documentation。Documentation是最最重要的编程手册,涵盖了整个Java所有方面的内容的描述。可以这样说,学习Java编程,大部分时间都是花在看这个Documentation上面的。我是随身携带的,写Java代码的时候,随时查看,须臾不离手。三、 应用服务器(App Server)App Server是运行Java企业组件的平台,构成了应用软件的主要运行环境。当前主流的App Server是BEA公司的W

4、eblogic Server和IBM公司的Websphere以及免费的Jboss,选择其中一个进行学习就可以了,个人推荐Weblogic,因为它的体系结构更加干净,开发和部署更加方便,是Java企业软件开发人员首选的开发平台。下面简要介绍几种常用的App Server:1、 TomcatTomcat严格意义上并不是一个真正的App Server,它只是一个可以支持运行Serlvet/JSP的Web容器,不过Tomcat也扩展了一些App Server的功能,如JNDI,数据库连接池,用户事务处理等等。Tomcat被非常广泛的应用在中小规模的Java Web应用中,因此本文做一点下载、安装和配置

5、Tomcat的介绍:Tomcat是Apache组织下Jakarta项目下的一个子项目,它的主网站是: Tomcat软件下载的连接是: 。下载Tomcat既可以直接下载zip包,也可以下载exe安装包(个人建议zip更干净些),不管哪种情况,下载完毕安装好以后(zip直接解压缩就可以了)。需要设置两个环境变量:JAVA_HOME=C:j2sdkCATALINA_HOME=D:tomcat4 (你的Tomcat安装目录)这样就安装好了,启动Tomcat运行CATALINA_HOMEbinstartup.bat,关闭Tomcat运行shutdown.bat脚本。Tomcat启动以后,默认使用8080

6、端口,因此可以用浏览器访问http:/localhost:8080来测试Tomcat是否正常启动。Tomcat提供了两个Web界面的管理工具,URL分别是:http:/localhost:8080/admin/index.jsp http:/localhost:8080/manager/html 在启用这两个管理工具之前,先需要手工配置一下管理员用户和口令。用一个文本工具打开CATALINA_HOMEconftomcat-users.xml这个文件,加入如下几行:<role rolename="manager"/><role rolename="

7、admin"/><user username="robbin" password="12345678" roles="admin,manager,tomcat"/>这样用户“robbin”就具备了超级管理员权限。重新启动Tomcat以后,你就可以使用该用户来登陆如上的两个管理工具,通过Web方式进行Tomcat的配置和管理了。2、 BEA WeblogicWeblogic可以到BEA的网站上免费注册之后下载到最新的Weblogic8.1企业版,License可以免费使用1年时间,其实这已经完全足够了。Web

8、logic的下载连接: 。3、 IBM WebshpereWebsphere同样可以下载到免费的试用版本,到IBM的developerWorks网站可以看到Websphere试用产品的下载和相关的Websphere的资料,developerWorks中文网站的连接是: ,Websphere的下载连接: 。4四、 Java应用的运行环境Java的应用可以简单分为以下几个方面:1、 Java的桌面应用桌面应用一般仅仅需要JRE的支持就足够了。2、 Java Web应用Java的Web应用至少需要安装JDK和一个web容器(例如Tomcat),以及一个多用户数据库,Web应用至少分为三层:Brows

9、er层:浏览器显示用户页面Web层:运行Servlet/JSPDB层:后端数据库,向Java程序提供数据访问服务3、 Java企业级应用企业级应用比较复杂,可以扩展到n层,最简单情况会分为4层:Browser层:浏览器显示用户页面Client层:Java客户端图形程序(或者嵌入式设备的程序)直接和Web层或者EJB层交互Web层:运行Servlet/JSPEJB层:运行EJB,完成业务逻辑运算DB层:后端数据库,向Java程序提供数据访问服务4、 Java嵌入式应用Java嵌入式应用是一个方兴未艾的领域,从事嵌入式开发,需要从Sun下载J2ME开发包,J2ME包含了嵌入式设备专用虚拟机KVM,

10、和普通的JDK中包含的JVM有所不同。另外还需要到特定的嵌入式厂商那里下载模拟器。Java Learning Path(二)书籍篇学习一门新的知识,不可能指望只看一本,或者两本书就能够完全掌握。需要有一个循序渐进的阅读过程。我推荐Oreilly出版的Java系列书籍。在这里我只想补充一点看法,很多人学习Java是从Thinking in Java这本书入手的,但是我认为这本书是不适合初学者的。我认为正确的使用这本书的方法应该是作为辅助的读物。Thinking in Java并不是在完整的介绍Java的整个体系,而是一种跳跃式的写作方法,是一种类似tips的方法来对Java很多知识点进行了深入的

11、分析和解释。对于初学者来说,最好是找一本Java入门的书籍,但是比较完整的循序的介绍Java的语法,面向对象的特性,核心类库等等,在看这本书的同时,可以同步来看Thinking in Java,来加深对Java的理解和原理的运用,同时又可以完整的了解Java的整个体系。对于Java的入门书籍,蔡学镛推荐的是Oreilly的Exploring Java, 2nd Edition 或者Java in a Nutshell,2nd Edition(针对C+背景),我并没有看过这两本书。其实我觉得电子工业出版社的Java 2编程详解或者Java 2从入门到精通就很不错。在所有的Java书籍当中,其实最

12、最有用的,并不是O'reilly的 Java Serials,真正最最有用处是JDK的Documentation!几乎你想获得的所有的知识在Documentation里面全部都有,其中最主要的部分当然是Java基础类库的API文档,是按照package来组织的,对于每一个class都有详细的解释,它的继承关系,是否实现了某个接口,通常用在哪些场合,还可以查到它所有的public的属性和方法,每个属性的解释,意义,每个方法的用途,调用的参数,参数的意义,返回值的类型,以及方法可能抛出的异常等等。可以这样来说,所有关于Java编程方面的书籍其实都不过是在用比较通俗易懂的语言,和良好的组织方

13、式来介绍Documentation里面的某个package里面包含的一些类的用法而已。所以万变不离其宗,如果你有足够的能力来直接通过Documentation来学习Java的类库,那么基本上就不需要看其他的书籍了。除此之外,Documentation也是编程必备的手册,我的桌面上有三个Documentation的快捷方式,分别是J2SDKJava Learning Path(三)过程篇每个人的学习方法是不同的,一个人的方法不见得适合另一个人,我只能是谈自己的学习方法。因为我学习Java是完全自学的,从来没有问过别人,所以学习的过程基本上完全是自己摸索出来的。我也不知道这种方法是否是比较好的方法

14、,只能给大家提供一点参考了。学习Java的第一步是安装好JDK,写一个Hello JWorld, 其实JDK的学习没有那么简单,关于JDK有两个问题是很容易一直困扰Java程序员的地方:一个是CLASSPATH的问题,其实从原理上来说,是要搞清楚JRE的ClassLoader是如何加载Class的;另一个问题是package和import问题,如何来寻找类的路径问题。把这两个问题摸索清楚了,就扫除了学习Java和使用JDK的最大障碍。推荐看一下王森的Java深度历险,对这两个问题进行了深入的探讨。第二步是学习Java的语法。Java的语法是类C+的,基本上主流的编程语言不是类C,就是类C+的,

15、没有什么新东西,所以语法的学习,大概就是半天的时间足够了。唯一需要注意的是有几个不容易搞清楚的关键字的用法,public,protected,private,static,什么时候用,为什么要用,怎么用,这可能需要有人来指点一下,我当初是完全自己琢磨出来的,花了很久的时间。不过后来我看到Thinking in Java这本书上面是讲了这些概念的。第三步是学习Java的面向对象的编程语言的特性的地方。比如继承,构造器,抽象类,接口,方法的多态,重载,覆盖,Java的异常处理机制。对于一个没有面向对象语言背景的人来说,我觉得这个过程需要花很长很长时间,因为学习Java之前没有C+的经验,只有C的经

16、验,我是大概花了一个月左右吧,才彻底把这些概念都搞清楚,把书上面的例子反复的揣摩,修改,尝试,把那几章内容反复的看过来,看过去,看了不下5遍,才彻底领悟了。不过我想如果有C+经验的话,应该一两天时间足够了。那么在这个过程中,可以多看看Thinking in Java这本书,对面向对象的讲解非常透彻。可惜的是我学习的时候,并没有看到这本书,所以自己花了大量的时间,通过自己的尝试和揣摩来学会的。第四步第五步第六步,Java Web 编程Web编程的核心是HTTP协议,HTTP协议和Java无关,如果不熟悉HTTP协议的话,虽然也可以学好Servlet/JSP编程,但是达不到举一反三,一通百通的境界

17、。所以HTTP协议的学习是必备的。如果熟悉了HTTP协议的话,又有了Java编程的良好的基础,学习Servlet/JSP简直易如反掌,我学习Servlet/JSP就用了不到一周的时间,然后就开始用JSP来做项目了。在Servlet/JSP的学习中,重头仍然是Servlet Documentation。Servlet API最常用的类很少,花比较少的时间就可以掌握了。把这些类都看一遍,多写几个例子试试。Servlet/JSP编程本质就是在反复调用这些类来通过HTTP协议在Web Server和Brower之间交谈。另外对JSP,还需要熟悉几个常用JSP的标记,具体的写法记不住的话,临时查就是了。

18、此外Java Web编程学习的重点要放在Web Application的设计模式上,如何进行业务逻辑的分析,并且进行合理的设计,按照MVC设计模式的要求,运用Servlet和JSP分别完成不同的逻辑层,掌握如何在Servlet和JSP之间进行流程的控制和数据的共享,以及Web Application应该如何配置和部署。第七步Java Learning Path(四) 方法篇Java作为一门编程语言,最好的学习方法就是写代码。当你学习一个类以后,你就可以自己写个简单的例子程序来运行一下,看看有什么结果,然后再多调用几个类的方法,看看运行结果,这样非常直观的把类给学会了,而且记忆非常深刻。然后不应

19、该满足把代码调通,你应该想想看如果我不这样写,换个方式,再试试行不行。记得哪个高人说过学习编程就是个破坏的过程,把书上的例子,自己学习Documentation编写的例子在运行通过以后,不断的尝试着用不同的方法实现,不断的尝试破坏代码的结构,看看它会有什么结果。通过这样的方式,你会很彻底的很精通的掌握Java。举个例子,我们都编过Hello World很多初学者不是很理解为什么main方法一定要这样来定义public static void main(String args),能不能不这样写?包括我刚学习Java的时候也有这样的疑问。想知道答案吗?很简单,你把main改个名字运行一下,看看报什

20、么错误,然后根据出错信息进行分析;把main的public取掉,在试试看,报什么错误;static去掉还能不能运行;不知道main方法是否一定要传一个String数组的,把String改掉,改成int,或者String试试看;不知道是否必须写args参数名称的,也可以把args改成别的名字,看看运行结果如何。我当初学习Java的时候就是这样做的,把Hello World程序反复改了七八次,不断运行,分析运行结果,最后就彻底明白为什么了main方法是这样定义的了。此外,我对于staic,public,private,Exception,try catch finally等等等等一开始都不是很懂,

21、都是把参考书上面的例子运行成功,然后就开始破坏它,不断的根据自己心里面的疑问来重新改写程序,看看能不能运行,运行出来是个什么样子,是否可以得到预期的结果。这样虽然比较费时间,不过一个例子程序这样反复破坏几次之后。我就对这个相关的知识彻底学通了。有时候甚至故意写一些错误的代码来运行,看看能否得到预期的运行错误。这样对于编程的掌握是及其深刻的。其中特别值得一提的是JDK有一个非常棒的调试功能,-verbose,javac verbose 以及其它很多JDK工具都有这个选项,-verbose 可以显示在命令执行的过程中,JVM都依次加载哪里Class,通过这些宝贵的调试信息,可以帮助我们分析出JVM

22、在执行的过程中都干了些什么。另外,自己在学习过程中,写的很多的这种破坏例程,应该有意识的分门别类的保存下来,在工作中积累的典型例程也应该定期整理,日积月累,自己就有了一个代码库了。遇到类似的问题,到代码库里面 Copy & Paste ,Search & Replace,就好了,极大提高了开发速度。最理想的情况是把一些通用的例程自己再抽象一层,形成一个通用的类库,封装好。那么可复用性就更强了。所以我觉得其实不是特别需要例程的,自己写的破坏例程就是最好的例子,如果你实在对自己写的代码不放心的话,我强烈推荐你看看JDK基础类库的Java源代码。在JDK安装目录下面会有一个src.z

23、ip,解开来就可以完整的看到整个JDK基础类库,也就是rt.jar的Java源代码,你可以参考一下Sun是怎么写Java程序的,规范是什么样子的。我自己在学习Java的类库的时候,当有些地方理解的不是很清楚的时候,或者想更加清晰的理解运作的细节的时候,往往会打开相应的类的源代码,通过看源代码,所有的问题都会一扫而空。Java Learning Path(五)资源篇 (英文)Sun的Java网站,是一个应该经常去看的地方。不用多说。 IBM的developerWorks网站,英语好的直接去英文主站点看。这里不但是一个极好的面向对象的分析设计网站,也是Web Services,Java,Linux

24、极好的网站。强烈推荐! (英文)关于Java很多新技术的讨论和新闻。想多了解Java的方方面面的应用,这里比较好。 BEA的开发者园地,BEA作为最重要的App Server厂商,有很多独到的技术,在Weblogic上做开发的朋友不容错过。 (英文)TheServerSide是一个著名的专门面向Java Server端应用的网站。 JSP技术网站,有相当多的Java方面的文章和资源。SourgeForge是一个开放源代码软件的大本营,其中也有非常非常丰富的Java的开放源代码的著名的软件。附:java入门与加深FAQ一、准备篇1 什么是Java、Java2、JDK?JDK后面的1.3、版本号又

25、是怎么回事?答:Java是一种通用的,并发的,强类型的,面向对象的编程语言(摘自Java规范第二版) JDK是Sun公司分发的免费Java开发工具,正式名称为J2SDK(Java2 Software Develop Kit)。2 什么是JRE/J2RE?答:J2RE是Java2 Runtime Environment,即Java运行环境,有时简称JRE。如果你只需要运行Java程序或Applet,下载并安装它即可。如果你要自行开发Java软件,请下载JDK。在JDK中附带有J2RE。注意:由于Microsoft对Java的支持不完全,请不要使用IE自带的虚拟机来运行Applet,务必安装一个J

26、2RE或JDK。3 学习Java用什么工具比较好?答:作者建议首先使用JDK+文本编辑器,这有助你理解下列几个基础概念:path,classpath,package并熟悉基本命令:javac和java。并且下载和你的JDK版本一致的API帮助。如果你不确定类或函数的用法,请先查阅API而不是发贴求助。当你熟悉Java之后,你可以考虑换一个IDE。很多人推荐JCreator,实际上JCreator的功能还 是很弱的。作者推荐eclipse,下载网因eclispe是免费的.4 学习Java有哪些好的参考书?答:作者首先推荐Thinking in Java,中文名Java编程思想,有中文版。该书第一

27、章介绍了很多面向对象的编程思想,作为新手应当认真阅读。除此以外,O´relly出版社和Wrox出版社的书也不错。作者本人不喜欢大陆作者的书。也许你觉得英文太难,但是网上大多数资料都是英文的。另外,你需要经常查阅API,而那也是英文的。5 Java和C+哪个更好?答:这个问题是一个很不恰当的问题。你应该问:Java和C+哪个更适用于我的项目?如果你不需要跨平台,不需要分布式,要强调程序的运行速度,C+更为适用。反之?你应当考虑Java。6 什么是J2SE/J2EE/J2ME?答:J2SE就是一般的Java。J2ME是针对嵌入式设备的,比如Java手机,它有自己的SDK。而J2EE使用J

28、2SE的SDK。J2EE规范更多的是对J2EE服务器的要求和开发人员的约束。详情见后继"J2EE FAQ"。二、命令篇7 我写了第一个Java程序,应该如何编译/运行?答:首先请将程序保存为xxx.java文件,然后在dos窗口下使用javac xxx.java命令,你会发现该目录下多了一个xxx.class文件,再使用java xxx命令,你的java程序就开始运行了。8 我照你说的做了,但是出现什么"´javac´ 不是内部或外部命令,也不是可运行的程序或批处理文件。"。答:你遇到了path问题。操作系统在一定的范围(path)内

29、搜索javac.exe,但是没能找到。请编辑你的操作系统环境变量,新增一个JAVA_HOME变量,设为你JDK的安装目录,再编辑Path变量,加上一项 %JAVA_HOME%bin。然后关掉并新开一个dos窗口,你就可以使用javac和java命令了。9 环境变量怎么设置?答:请向身边会设的人咨询。10111213 我没有声明任何package会怎么样?答:你的类被认为放在默认包中。这时全名和短名是一致的。14 在一个类中怎么使用其他类?答:如果你使用java.lang包中的类,不用做任何事。如果你使用其他包中的类,使用import package1.class1; 或 import pack

30、age2.*;这里.*表示引入这个包中的所有类。然后在程序中你可以使用其他类的短名。如果短名有冲突,使用全名来区分。15 我用了package的时候显示"NoClassDefFoundError",但是我把所有package去掉的时候能正常运行。答:将你的java文件按包名存放。比如你的工作目录是/work,你的类是package1.class1,那么将它存放为/work/package1/class1.java。如果没有声明包,那么直接放在/work下。在/work下执行javac package1/class1.java,再执行java package1.class1,

31、你会发现一切正常。另外,你可以考虑开始使用IDE。16 我想把java编译成exe文件,该怎么做?答:JDK只能将java源文件编译为class文件。class文件是一种跨平台的字节码,必须依赖平台相关的JRE来运行。Java以此来实现跨平台,有些开发工具可以将java文件编译为exe文件。作者反对这种做法,因为这样就取消了跨平台性。如果你确信你的软件只在Windows平台上运行,你可以考虑使用C+/C#来编程。17 我在编译的时候遇到什么"deprecated API",是什么意思?答:所谓deprecated是指已经?时,但是为了向前兼容起见仍然保留的方法,这些方法可能

32、会在以后取消支持。你应当改用较新的方法。一般在API里面会说明你应当用什么方法来代替之。三、I/O篇18 我怎么给java程序加启动参数,就像dir /p/w那样?答:还记得public static void main(String args)吗?这里的args就是你的启动参数。在运行时你输入java package1.class1 -arg1 -arg2,args中就会有两个String,一个是arg1,另一个是arg2。19 我怎么从键盘输入一个int/double/字符串?答:java的I/O操作比C+要复杂一点。如果要从键盘输入,样例代码如下:BufferedReader cin =

33、 new BufferedReader( new InputStreamReader( System.in ) );String s = cin.readLine();这样你就获得了一个字符串,如果你需要数字的话再加上:int n = Integer.parseInt( s );或者 double d = Double.parseDouble( s );20 我怎么输出一个int/double/字符串?答:在程序开始写:PrintWriter cout = new PrintWriter( System.out );需要时写:cout.print(n); 或者cout.println(&quo

34、t;hello")等等。2122 我怎么从文件输入一个int/double/字符串?答:类似于从键盘输入,只不过换成BufferedReader fin = new BufferedReader( new FileReader(" myFileName " ) );PrintWriter fout = new PrintWriter( new FileWriter(" myFileName " ) );另外如果你还没下载API,请开始下载并阅读java.io包中的内容。2324 怎么判断要读的文件已经到了尽头?答:你肯定没有认真看API。在Re

35、aer的read方法中明确说明返回-1表示流的结尾。四、 关键字篇25 java里面怎么定义宏?答:java不支持宏,因为宏代换不能保证类型安全。如果你需要定义常量,可以将它定义为某个类的static final成员。参见26和30。26 java里面没法用const。答:你可以用final关键字。例如 final int m = 9。被声明为final的变量不能被再次赋值。也可以用于声明方法或类,被声明为final的方法或类不能被继承。注意const是java的保留字以备扩充。27 java里面也不能用goto。答:甚至在面向过程的语言中你也可以完全不用goto。请检查你的程序流程是否合理。

36、如果你需要从多层循环中迅速跳出,java增强了(和C+相比)break和continue的功能。例如:outer :while( . )inner :for( . ). break inner; . continue outer; .和const一样,goto也是java的保留字以备扩充。28 java里面能不能重载操作符?答:不能。String的+号是唯一一个内置的重载操作符。你可以通过定义接口和方法来实现类似功能。29 我new了一个对象,但是没法delete掉它。答:java有自动内存回收机制,即所谓Garbarge Collector。你再也不用担心指针错误。30 我想知道为什么mai

37、n方法必须被声明为public static?答:声明为public是为了这个方法可以被外部调用,详情见面向对象篇37。static是为了将某个成员变量/方法关联到类(class)而非实例(instance)。你不需要创建一个对象就可以直接使用这个类的static成员,在A类中调用B类的static成员可以使用B.staticMember的写法。注意一个类的static成员变量是唯一的,被所有该类对象所共享的。31 throw和throws有什么不同?答:throws用于声明一个方法会抛出哪些异常。而throw是在方法体中实际执行抛出异常的动作。如果你在方法中throw一个异常,却没有在方法声

38、明中声明之,编译器会报错。注意Error和RuntimeException的子类是例外,无需特别声明。32 什么是异常?答:异常最早在Ada语言中引入,用于在程序中动态处理错误并恢复。你可以在方法中拦截底层异常并处理之,也可以抛给更高层的模块去处理。你也可以抛出自己的异常指示发生了某些不正常情况。常见的拦截处理代码如下:try. /以下是可能发生异常的代码. /异常被抛出,执行流程中断并转向拦截代码。.catch(Exception1 e) /如果Exception1是Exception2的子类并要做特别处理,应排在前面/发生Exception1时被该段拦截catch(Exception2 e

39、)/发生Exception2时被该段拦截finally /这是可选的/无论异常是否发生,均执行此段代码33 final和finally有什么不同?答:final请见26。finally用于异常机制,参见32。五、 面向对象篇34 extends和implements有什么不同?答:extends用于(单)继承一个类(class),而implements用于实现一个接口(interface)。interface的引入是为了部分地提供多继承的功能。在interface中只需声明方法头,而将方法体留给实现的class来做。这些实现的class的实例完全可以当作interface的实例来对待。有趣的是

40、在interface之间也可以声明为extends(单继承)的关系。35 java怎么实现多继承?答:java不支持显式的多继承。因为在显式多继承的语言例如c+中,会出现子类被迫声明祖先虚基类构造函数的问题,而这是违反面向对象的封装性原则的。java提供了interface和implements关键字来部分地实现多继承。参见34。36 abstract是什么?答:被声明为abstract的方法无需给出方法体,留给子类来实现。而如果一个类中有abstract方法,那么这个类也必须声明为abstract。被声明为abstract的类无法实例化,尽管它可以定义构造方法供子类使用。37 public,

41、protected,private有什么不同?答:这些关键字用于声明类和成员的可见性。public成员可以被任何类访问,protected成员限于自己和子类访问,private成员限于自己访问。Java还提供了第四种的默认可见性,一般称为package private,当没有任何public,protected,private修饰符时,成员是同一包内可见。类可以用public或默认来修饰。38 Override和Overload有什么不同?答:Override是指父类和子类之间方法的继承关系,这些方法有着相同的名称和参数类型。Overload是指同一个类中不同方法(可以在子类也可以在父类中定义

42、)间的关系,这些方法有着相同的名称和不同的参数类型。39 我继承了一个方法,但现在我想调用在父类中定义的方法。答:用super.xxx()可以在子类中调用父类方法。40 我想在子类的构造方法中调用父类的构造方法,该怎么办?答:在子类构造方法的第一行调用super(.)即可。41 我在同一个类中定义了好几个构造方法并且想在一个构造方法中调用另一个。答:在构造方法第一行调用this(.)。42 我没有定义构造方法会怎么样?答:自动获得一个无参数的构造方法。43 我调用无参数的构造方法失败了。答:如果你至少定义了一个构造方法,就不再有自动提供的无参数的构造方法了。你需要显式定义一个无参数的构造方法。44 我该怎么定义类似于C+中的析构方法(destructor)?答:提供一个void finalize()方法。在Garbarge Collector回收该对象时会调用该方法。注意实际上你很难判断一个对象会在什么时候被回收。作者从未感到需要提供该方法。45 我想将一个父类对象转换成一个子类对象该怎么做?答:强制类型转换。如public void meth(A a)B b = (B)a;如果a实际上并不是B的实例,会抛出ClassCastException。所以请确保a确实是B的实例。46 其实我不确定a是不是B的实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论