<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 構造器 * 僅當系統沒有提供任何構造器時,系統才會提供默認構造器; * 在構造器中,使用this調用另一個構造器:this\(\) * 在構造器中,使用super調用父類構造器:super\(\) ### 構造器處理步驟 1. 所有數據域被初始化為默認值\(0、false或null\); 2. 按照類聲明中出現的次序,依次執行所有域初始化語句和初始化塊; 3. 如果構造器第一行調用了第二個構造器,則執行第二個構造器主體; 4. 執行這個構造器主體; ### 更改器方法與訪問器方法 對實例域做出修改的方法被稱為更改器方法(mutator method),僅訪問實例域而不進行修改的方法被稱為訪問器方法(accessor method) ### Class * 靜態嵌套類 * 內部類 * 局部類:方法內定義的類稱為局部類 * 匿名內部類 * 匿名子類 ### 匿名內部類 ``` public static void main(String[] args) throws InterruptedException { new Thread(getTask()).start(); } private static Runnable getTask(){ return new Runnable() { @Override public void run() { System.err.println("這是匿名內部類"); } }; } ``` ### 抽象類 * 任何包含一個或多個抽象方法的類都必須被聲明為抽象的; * 抽象類的所有子類,要么實現超類中的所有抽象方法,要么自己也聲明為抽象的; ### 內部類與嵌套類的區別與聯系 * 內部類的方法可以訪問外部類的實例變量 * 當靜態嵌套類的實例不需要知道它屬于外部那個類的實例時,使用靜態嵌套類;否則使用內部類; * 靜態的嵌套類只能通過對象訪問外層包含類的非靜態成員;也就是說嵌套類不能直接引用包含類的非靜態成員變量; * 內部類可以訪問外部類的所有成員變量和方法; * 內部類對象擁有一個對外部類對象的引用\(outer\); * JavaSE8之前,必須把從局部類訪問的局部變量聲明為final; ### 匿名子類 ``` ArrayList<String> list = new ArrayList<String>(100) { public void add() { super.add("hello"); } }; ArrayList<String> list1 = new ArrayList<String>() { { add("heel"); } }; ``` ### 靜態內部類 * 在內部類不需要訪問外部類對象的時候,應該使用靜態內部類; * 與常規內部類不同,靜態內部類可以有靜態域和方法; * 聲明在接口中的內部類自動成為static和public類; ### 類設計技巧 * 一定要保證數據私有; * 一定要對數據初始化; * 不是所有的域都需要獨立的域訪問器和域更改器 * 將職責過多的類進行分解 * 類名和方法名要能夠體現它們的職責 * 優先使用不可變的類 ### 知識點 * 在將超類轉換為子類之前,應該使用instanceof進行檢查; * 在調用x.toString\(\)的地方可以用"" + x代替 * instanceof\(如果被檢查對象為null,則結果返回false\) ``` String str = null; if (str instanceof Object) { // 不產生異常result is false System.err.println("yes"); } System.err.println("no"); ``` * 內部類不能聲明靜態成員; ``` public class ClassDemo { public static void main(String[] args) { System.err.println(ClassDemo.Student.num); System.err.println(ClassDemo.Teacher.code); } class Student { private final static int num = 10; // ok // private static int code = 10; // 編譯報錯 } static class Teacher { private static int code = 10; // ok } } ``` * 雙括號初始化 ``` public static void main(String[] args) throws Exception { init(new ArrayList<String>() { { add("luoyoub"); add("robert"); } }); } private static void init(List<String> list) { list.stream().forEach(System.err::println); } ``` * 一個方法覆蓋另一個方法時可以指定一個更嚴格的返回類型 ``` class Student extends Person { public Student get() { return (Student) new Object(); } } class Person { public Person get() { return new Person(); } } ``` ### Object ![](../assets/20171002105010.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看