java第九天

10.01_面向對象(package關鍵字的概述及作用)(瞭解)

  • A:爲什麼要有包
    • 將字節碼(.class)進行分類存放
    • 包其實就是文件夾
  • B:包的概述
  • 舉例:
    學生:增加,刪除,修改,查詢
    老師:增加,刪除,修改,查詢

    方案1:按照功能分
        com.fzj.add
            AddStudent
            AddTeacher
        com.fzj.delete
            DeleteStudent
            DeleteTeacher
        com.fzj.update
            UpdateStudent
            UpdateTeacher
        com.fzj.find
            FindStudent
            FindTeacher
    
    方案2:按照模塊分
        com.fzj.teacher
            AddTeacher
            DeleteTeacher
            UpdateTeacher
            FindTeacher
        com.fzj.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

10.04_面向對象(不同包下類之間的訪問)(掌握)

  • A:案例演示
    • 不同包下類之間的訪問

10.05_面向對象(import關鍵字的概述和使用)(掌握)

  • A:案例演示
    • 爲什麼要有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”

10.17_day10總結

  • 把今天的知識點總結一遍。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章