10.01_面向對象(package關鍵字的概述及作用)(瞭解)
-
A:爲什麼要有包
- 將字節碼(.class)進行分類存放
- 包其實就是文件夾
-
B:包的概述
-
舉例:
學生:增加,刪除,修改,查詢
老師:增加,刪除,修改,查詢
…方案1:按照功能分 com.heima.add AddStudent AddTeacher com.heima.delete DeleteStudent DeleteTeacher com.heima.update UpdateStudent UpdateTeacher com.heima.find FindStudent FindTeacher 方案2:按照模塊分 com.heima.teacher AddTeacher DeleteTeacher UpdateTeacher FindTeacher com.heima.student AddStudent DeleteStudent UpdateStudent FindStudent
10.02_面向對象(包的定義及注意事項)(掌握)
- A:定義包的格式
- package 包名;
- 多級包用.分開即可
- B:定義包的注意事項
- A:package語句必須是程序的第一條可執行的代碼
- B:package語句在一個java文件中只能有一個
- C:如果沒有package,默認表示無包名
- C:案例演示
- 包的定義及注意事項
10.03_面向對象(帶包的類編譯和運行)(掌握)
- A:如何編譯運行帶包的類
- a:javac編譯的時候帶上-d即可
- javac -d . HelloWorld.java
- b:通過java命令執行。
- java 包名.HellWord
- a:javac編譯的時候帶上-d即可
10.04_面向對象(不同包下類之間的訪問)(掌握)
- A:案例演示
- 不同包下類之間的訪問
10.05_面向對象(import關鍵字的概述和使用)(掌握)
- A:案例演示
- 爲什麼要有import
- 其實就是讓有包的類對調用者可見,不用寫全類名了
- 爲什麼要有import
- B:導包格式
- import 包名;
- 注意:
- 這種方式導入是到類的名稱。
- 雖然可以最後寫*,但是不建議。
- C:package,import,class有沒有順序關係(面試題)
10.06_面向對象(四種權限修飾符的測試)(掌握)
- A:案例演示
- 四種權限修飾符
- B:結論
-
本類 同一個包下(子類和無關類) 不同包下(子類) 不同包下(無關類) private Y 默認 Y Y protected Y Y Y public Y Y Y Y
10.07_面向對象(類及其組成所使用的常見修飾符)(掌握)
*** A:修飾符:
* 權限修飾符:private,默認的,protected,public
* 狀態修飾符:static,final
* 抽象修飾符:abstract
-
B:類:
-
權限修飾符:默認修飾符,public
-
狀態修飾符:final
-
抽象修飾符:abstract
-
用的最多的就是:public
-
-
C:成員變量:
-
權限修飾符:private,默認的,protected,public
-
狀態修飾符:static,final
-
用的最多的就是:private
-
-
D:構造方法:
-
權限修飾符:private,默認的,protected,public
-
用的最多的就是:public
-
-
E:成員方法:
-
權限修飾符:private,默認的,protected,public
-
狀態修飾符:static,final
-
抽象修飾符:abstract
-
用的最多的就是:public
-
-
F:除此以外的組合規則:
- 成員變量:public static final
- 成員方法:
- public static
- public abstract
- public final**
10.08_面向對象(內部類概述和訪問特點)(瞭解)
- A:內部類概述
- B:內部類訪問特點
- a:內部類可以直接訪問外部類的成員,包括私有。
- b:外部類要訪問內部類的成員,必須創建對象。
- 外部類名.內部類名 對象名 = 外部類對象.內部類對象;
- C:案例演示
- 內部類極其訪問特點
10.09_面向對象(成員內部類私有使用)(瞭解)
- private
10.10_面向對象(靜態成員內部類)(瞭解)
- static
- B:成員內部類被靜態修飾後的訪問方式是:
- 外部類名.內部類名 對象名 = 外部類名.內部類對象;
10.11_面向對象(成員內部類的面試題)(掌握)
- A:面試題
-
要求:使用已知的變量,在控制檯輸出30,20,10。 class Outer { public int num = 10; class Inner { public int num = 20; public void show() { int num = 30; System.out.println(?); System.out.println(??); System.out.println(???); } } } class InnerClassTest { public static void main(String[] args) { Outer.Inner oi = new Outer().new Inner(); oi.show(); } }
10.12_面向對象(局部內部類訪問局部變量的問題)(掌握)
- A:案例演示
-
局部內部類訪問局部變量必須用final修飾
-
局部內部類在訪問他所在方法中的局部變量必須用final修飾,爲什麼?
因爲當調用這個方法時,局部變量如果沒有用final修飾,他的生命週期和方法的生命週期是一樣的,當方法彈棧,這個局部變量也會消失,那麼如果局部內部類對象還沒有馬上消失想用這個局部變量,就沒有了,如果用final修飾會在類加載的時候進入常量池,即使方法彈棧,常量池的常量還在,也可以繼續使用但是jdk1.8取消了這個事情,所以我認爲這是個bug
-
10.13_面向對象(匿名內部類的格式和理解)
- A:匿名內部類
- 就是內部類的簡化寫法。
- B:前提:存在一個類或者接口
- 這裏的類可以是具體類也可以是抽象類。
- C:格式:
-
new 類名或者接口名(){ 重寫方法; }
- D:本質是什麼呢?
- 是一個繼承了該類或者實現了該接口的子類匿名對象。
- E:案例演示
- 按照要求來一個匿名內部類
10.14_面向對象(匿名內部類重寫多個方法調用)
- A:案例演示
- 匿名內部類的方法調用
10.15_面向對象(匿名內部類在開發中的應用)
- A:代碼如下
-
//這裏寫抽象類,接口都行 abstract class Person { public abstract void show(); } class PersonDemo { public void method(Person p) { p.show(); } } class PersonTest { public static void main(String[] args) { //如何調用PersonDemo中的method方法呢? PersonDemo pd = new PersonDemo (); } }
10.16_面向對象(匿名內部類的面試題)
- A:面試題
-
按照要求,補齊代碼 interface Inter { void show(); } class Outer { //補齊代碼 } class OuterDemo { public static void main(String[] args) { Outer.method().show(); } } 要求在控制檯輸出”HelloWorld”