﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-greenteazsh-随笔分类-think in java</title><link>http://www.blogjava.net/greenteazsh/category/23803.html</link><description>让我们携手一起努力......</description><language>zh-cn</language><lastBuildDate>Sat, 22 Dec 2007 17:13:41 GMT</lastBuildDate><pubDate>Sat, 22 Dec 2007 17:13:41 GMT</pubDate><ttl>60</ttl><item><title>JAVA基础知识精华总结</title><link>http://www.blogjava.net/greenteazsh/archive/2007/12/20/169125.html</link><dc:creator>绿茶</dc:creator><author>绿茶</author><pubDate>Thu, 20 Dec 2007 10:35:00 GMT</pubDate><guid>http://www.blogjava.net/greenteazsh/archive/2007/12/20/169125.html</guid><wfw:comment>http://www.blogjava.net/greenteazsh/comments/169125.html</wfw:comment><comments>http://www.blogjava.net/greenteazsh/archive/2007/12/20/169125.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/greenteazsh/comments/commentRss/169125.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/greenteazsh/services/trackbacks/169125.html</trackback:ping><description><![CDATA[<strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、对象的初始化</strong>
<p>　　(1)非静态对象的初始化</p>
<p>　　在创建对象时，对象所在类的所有数据成员会首先进行初始化。</p>
<p>　　基本类型：<a class="bluekey" href="http://whatis.ctocio.com.cn/searchwhatis/69/6025569.shtml" target="_blank">int</a>型，初始化为0。</p>
<p>　　如果为对象：这些对象会按顺序初始化。</p>
<p>　　※在所有类成员初始化完成之后，才调用本类的构造方法创建对象。</p>
<p>　　构造方法的作用就是初始化。</p>
<p>　　(2)静态对象的初始化</p>
<p>　　程序中主类的静态变量会在main方法执行前初始化。</p>
<p>　　不仅第一次创建对象时，类中的所有静态变量都初始化，并且第一次访问某类(注意此时未创建此类对象)的静态对象时，所有的静态变量也要按它们在类中的顺序初始化。</p>
<p>　<strong>　2、继承时，对象的初始化过程 </strong></p>
<p>　　(1)主类的超类由高到低按顺序初始化静态成员，无论静态成员是否为private。</p>
<p>　　(2)主类静态成员的初始化。</p>
<p>　　(3)主类的超类由高到低进行默认构造方法的调用。注意，在调用每一个超类的默认构造方法前，先进行对此超类进行非静态对象的初始化。</p>
<p>　　(4)主类非静态成员的初始化。</p>
<p>　　(5)调用主类的构造方法。</p>
<p>　　<strong>3、关于构造方法</strong></p>
<p>　　(1)类可以没有构造方法，但如果有多个构造方法，就应该要有默认的构造方法，否则在继承此类时，需要在子类中显式调用父类的某一个非默认的构造方法了。</p>
<p>　　(2)在一个构造方法中，只能调用一次其他的构造方法，并且调用构造方法的语句必须是第一条语句。</p>
<p>　　<strong>4、有关public、private和protected</strong></p>
<p>　　(1)无public修饰的类，可以被其他类访问的条件是：a.两个类在同一文件中，b.两个类在同一文件夹中，c.两个类在同一软件包中。</p>
<p>　　(2)protected：继承类和同一软件包的类可访问。</p>
<p>　　(3)如果构造方法为private，那么在其他类中不能创建该类的对象。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong> 5、抽象类</strong> </p>
<p>　　(1)抽象类不能创建对象。</p>
<p>　　(2)如果一个类中一个方法为抽象方法，则这个类必须为abstract抽象类。</p>
<p>　　(3)继承抽象类的类在类中必须实现抽象类中的抽象方法。</p>
<p>　　(4)抽象类中可以有抽象方法，也可有非抽象方法。抽象方法不能为private。</p>
<p>　　(5)间接继承抽象类的类可以不给出抽象方法的定义。</p>
<p><strong>　　6、final关键字</strong></p>
<p>　　(1)一个对象是常量，不代表不能转变对象的成员，仍可以其成员进行操作。</p>
<p>　　(2)常量在使用前必须赋值，但除了在声明的同时初始化外，就只能在构造方法中初始化。</p>
<p>　　(3)final修饰的方法不能被重置(在子类中不能出现同名方法)。</p>
<p>　　(4)如果声明一个类为final，则所有的方法均为final，无论其是否被final修饰，但数据成员可为final也可不是。</p>
<p>　　<strong>7、接口<a class="bluekey" href="http://whatis.ctocio.com.cn/searchwhatis/103/6025603.shtml" target="_blank">interface</a>(用implements来实现接口)</strong></p>
<p>　　(1)接口中的所有数据均为static和final即静态常量。尽管可以不用这两个关键字修饰，但必须给常量赋初值。</p>
<p>　　(2)接口中的方法均为public，在实现接口类中，实现方法必须可public关键字。</p>
<p>　　(3)如果使用public来修饰接口，则接口必须与文件名相同。</p>
<p><strong>　　8、多重继承 </strong></p>
<p>　　(1)一个类继承了一个类和接口，那么必须将类写在前面，接口写在后面，接口之间用逗号分隔。</p>
<p>　　(2)接口之间可多重继承，注意使用关键字extends。</p>
<p>　　(3)一个类虽只实现了一个接口，但不仅要实现这个接口的所有方法，还要实现这个接口继承的接口的方法，接口中的所有方法均须在类中实现。</p>
<p>　<strong>　9、接口的嵌入</strong></p>
<p>　　(1)接口嵌入类中，可以使用private修饰。此时，接口只能在所在的类中实现，其他类不能访问。</p>
<p>　　(2)嵌入接口中的接口一定要为public。&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>10、类的嵌入</strong>  </p>
<p>　　(1)类可以嵌入另一个类中，但不能嵌入接口中。</p>
<p>　　}</p>
<p>　　(2)在静态方法或其他方法中，不能直接创建内部类对象，需通过手段来取得。</p>
<p>　　手段有两种：</p>
<p>　　<a class="bluekey" href="http://whatis.ctocio.com.cn/searchwhatis/213/5947213.shtml" target="_blank">class</a> A { class B {} B getB() { B b = new B(); return b; } } static void m() { A a = new A(); A.B ab = a.getB(); // 或者是 A.B ab = a.new B(); }</p>
<p>　　(3)一个类继承了另一个类的内部类，因为超类是内部类，而内部类的构造方法不能自动被调用，这样就需要在子类的构造方法中明确的调用超类的构造方法。接上例：</p>
<p>　　class C extends A.B { C() { new A().super(); // 这一句就实现了对内部类构造方法的调用。 } }</p>
<p>　　构造方法也可这样写：</p>
<p>　　C(A a) { a.super(); } // 使用这个构造方法创建对象，要写成C c = new C(a); a是A的对象。</p>
<p>　　11、异常类<a class="bluekey" href="http://whatis.ctocio.com.cn/searchwhatis/403/5948403.shtml" target="_blank">JAVA</a>中除了RunTimeException类，其他异常均须捕获或抛出。</p>
<img src ="http://www.blogjava.net/greenteazsh/aggbug/169125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/greenteazsh/" target="_blank">绿茶</a> 2007-12-20 18:35 <a href="http://www.blogjava.net/greenteazsh/archive/2007/12/20/169125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>