面向物件第五章
阿新 • • 發佈:2018-11-15
1.static final常量: 1)必須宣告同時初始化 2)類名點來訪問、不能被改變 3)建議:常量名所有字母都大寫,多個單詞之前用_分隔 4)編譯器在編譯時將常量直接替換為具體的值,效率高 5)何時用:資料永遠不變,並且經常使用 2.抽象方法: 1)由abstract修飾 2)只有方法的定義,沒有具體的實現(連{}都沒有) 3.抽象類: 1)由abstract修飾 2)包含抽象方法的類必須是抽象類 不包含抽象方法的類也可以宣告為抽象類------我樂意 3)抽象類不能被例項化 4)抽象類是需要被繼承的,派生類: 4.1)重寫抽象類中的所有抽象方法-----建議 4.2)也宣告為抽象類-----------------一般不這樣做 5)抽象類的意義: 5.1)封裝共有的屬性和行為--------------程式碼複用 5.2)為所有派生類提供統一的型別--------向上造型 5.3)可以包含抽象方法,為所有派生類提供統一的入口, 派生類的具體實現不同,但入口是一致的 1.成員內部類:應用率不高 1)類中套類,外面的稱為Outer外部類,裡面的稱為Inner內部類 2)內部類通常只服務於外部類,對外不具備可見性 3)內部類物件通常是在外部類中建立的 4)內部類中可以直接訪問外部類的成員(包括私有的) 內部類中有個隱式的引用指向了建立它的外部類物件 eg: 外部類名.this 2.匿名內部類: 1)若想建立一個類(派生類)的物件,並且物件只建立一個, 此時該類不必命名,稱為匿名內部類 2)在jdk1.8以前,匿名內部類中若想訪問外面的變數, 該變數必須是final的 常見面試題: 問:內部類有獨立的.class嗎? 答:有 Bullet[] bs = hero.shoot(); bullets = Arrays.copyOf(bullets,bullets.length+bs.length); //擴容(bs有幾個元素就擴大幾個容量) System.arraycopy(bs,0,bullets,bullets.length-bs.length,bs.length); //陣列的追加