標籤:
知識要點:運動員和教練案例分析
1:形式參數和傳回值的問題(理解) (1)
形式參數: 類名:需要該類的對象 抽象類別名:需要該類的子類對象 介面名:需要該介面的實作類別對象 (2)
傳回值類型: 類名:返回的是該類的對象 抽象類別名:返回的是該類的子類對象 介面名:返回的是該介面的實作類別的對象 (3)鏈式編程 對象.方法1().方法2().......方法n(); 這種用法:其實在方法1()調用完畢後,返回的應該是一個對象; 方法2()調用完畢後,應該返回一個對象。 方法n()調用完畢後,可能是對象,也可以不是對象。
2:包(理解) (1)其實就是檔案夾 (2)作用: A:區分同名的類 B:對類進行分類管理 a:按照功能分 b:按照模組分 (3)包的定義(掌握) package 包名; 多級包用.分開。 (4)
注意事項:(掌握) A:package語句必須在檔案中的第一條有效語句 B:在一個java檔案中,只能有一個package C:如果沒有package,預設就是無包名 (5)帶包的編譯和運行 A:手動式 a:編寫一個帶包的java檔案。 b:通過javac命令編譯該java檔案。 c:手動建立包名。 d:把b步驟的class檔案放到c步驟的最底層包 e:回到和包根目錄在同一目錄的地方,然後運行 帶包運行。 B:自動式 a:編寫一個帶包的java檔案。 b:javac編譯的時候帶上-d即可 javac -d . HelloWorld.java c:回到和包根目錄在同一目錄的地方,然後運行 帶包運行。
3:導包(掌握) (1)我們多次使用一個帶包的類,非常的麻煩,這個時候,Java就提供了一個關鍵字import。 (2)格式: import 包名...類名; 另一種: import 包名...*;(不建議) (3)package,import,class的順序(
#面試題#) package > import > class
4:許可權修飾符(掌握) (1)許可權修飾符
| |
public |
protected |
預設 |
private |
同一類中 |
√ |
√ |
√ |
√ |
同一包子類,其他類 |
√ |
√ |
√ |
|
不同包子類 |
√ |
√ |
|
|
不同包其他類 |
√ |
|
|
|
(2)這四種許可權修飾符在任意時刻只能出現一種。 public class Demo {}
5:常見的修飾符(理解) (1)分類: 許可權修飾符:private,預設,protected,public 狀態修飾符:static,final 抽象修飾符:abstract (2)
常見的類及其組成的修飾
類: 預設,public,final,abstract 常用的:public
成員變數: private,預設,protected,public,static,final 常用的:private
構造方法: private,預設,protected,public 常用的:public
成員方法: private,預設,protected,public,static,final,abstract 常用的:public (3)另外比較常見的: public static final int X = 10;(靜態常量) public static void show() {} (靜態方法) public final void show() {} (最終方法) public abstract void show();
6:內部類(理解) (1)把類定義在另一個類的內部,該類就被稱為內部類。 舉例:把類B定義在類A中,類B就被稱為內部類。 (2)
內部類的訪問規則 A:內部類可以直接存取外部類的成員,包括私人。 B:外部類要想訪問內部類成員,必須建立對象 (3)
內部類的分類 A:成員內部類 B:局部內部類 (4)
成員內部類 A:private 為了資料的安全性 B:static 為了訪問的方便性(注意:static只可以修飾內部類,不可以修飾外部類)
成員內部類不是靜態:
外部類名.內部類名 對象名 = new 外部類名.new 內部類名();
成員內部類是靜態:
外部類名.內部類名 對象名 = new 外部類名.內部類名(); (5)
成員內部類的面試題(填空) 30,20,10 class Outer { public int num = 10; class Inner { public int num = 20; public viod show() { int num = 30; System.out.println(num); System.out.println(this.num); //System.out.println(
new Outer().num); System.out.println(
Outer.this.num); } } } (6)
局部內部類
可以直接存取外部類的成員
可以建立內部類對象,通過對象調用內部類方法,來使用局部內部類功能
A:局部內部類訪問局部變數必須加final修飾。(#面試題#) B:為什麼呢? 因為局部變數是隨著方法的調用而調用,隨著調用完畢就消失,而堆記憶體的資料並不會立即消失。 所以,堆記憶體還是用該變數,而改變數已經沒有了。 為了讓該值還存在,就加final修飾。 通過反編譯工具我們看到了,加入final後,堆記憶體直接儲存的是值,而不是變數名。
(7)匿名內部類(掌握) A:是局部內部類的簡化形式 B:前提
存在一個類或者介面 C:格式: new 類名或者介面名() { 重寫方法; } D:本質:
其實是繼承該類或者實現介面的子類匿名對象 (8)
匿名內部類在開發中的使用 我們在開發的時候,會看到抽象類別,或者介面作為參數。 而這個時候,我們知道實際需要的是一個子類對象。 如果該方法僅僅調用一次,我們就可以使用匿名內部類的格式簡化。 (首先回顧我們曾經講過的方法的形式參數是參考型別的情況,重點是介面的情況,我們知道這裡需要一個子類對象。而匿名內部類就是一個子類匿名對象,所以,可以使用匿名內部類改進以前的做法。) interface Person { public abstract void study(); } class PersonDemo { public void method(Person p) { p.study(); } } class PersonTest { public static void main(String[] args) { PersonDemo pd = new PersonDemo(); pd.method(new Person() { public void study() { System.out.println("好好學習,天天向上"); } }); } }
(9)匿名內部類的面試題(補齊代碼) interface Inter { void show(); } class Outer { //補齊代碼 public static Inter method() { return new Inter() { public void show() { System.out.println("HelloWorld"); } }; } } class OuterDemo { public static void main(String[] args) { Outer.method().show(); //"HelloWorld" } }
Java基礎班學習筆記(10)