面向對象 +JAVA學習筆記-DAY06

06.01_面向對象(面向對象思想概述)(瞭解)

  • A:面向過程思想概述
    • 第一步
    • 第二步
  • B:面向對象思想概述
    • 找對象(第一步,第二步)
  • C:舉例
    • 買煎餅果子
    • 洗衣服
  • D:面向對象思想特點
    • a:是一種更符合我們思想習慣的思想
    • b:可以將複雜的事情簡單化
    • c:將我們從執行者變成了指揮者
      • 角色發生了轉換
  • E:面向對象開發
    • 就是不斷的創建對象,使用對象,指揮對象做事情。
  • F:面向對象設計
    • 其實就是在管理和維護對象之間的關係。
  • G:面向對象特徵
    • 封裝(encapsulation)
    • 繼承(inheritance)
    • 多態(polymorphism)

06.02_面向對象(類與對象概述)(掌握)

  • A:我們學習編程是爲了什麼
    • 爲了把我們日常生活中實物用學習語言描述出來
  • B:我們如何描述現實世界事物
    • 屬性 就是該事物的描述信息(事物身上的名詞)
    • 行爲 就是該事物能夠做什麼(事物身上的動詞)
  • C:Java中最基本的單位是類,Java中用class描述事物也是如此
    • 成員變量 就是事物的屬性
    • 成員方法 就是事物的行爲
  • D:定義類其實就是定義類的成員(成員變量和成員方法)
    • a:成員變量 和以前定義變量是一樣的,只不過位置發生了改變。在類中,方法外。
    • b:成員方法 和以前定義方法是一樣的,只不過把static去掉,後面在詳細講解static的作用。
  • E:類和對象的概念
    • a:類:是一組相關的屬性和行爲的集合
    • b:對象:是該類事物的具體體現
    • c:舉例:
      • 類 學生
      • 對象 具體的某個學生就是一個對象

06.03_面向對象(學生類的定義)(掌握)

  • A:學生事物
  • B:學生類
  • C:案例演示
    • 屬性:姓名,年齡,性別
    • 行爲:學習,睡覺

06.04_面向對象(手機類的定義)(掌握)

  • 模仿學生類,讓學生自己完成
    • 屬性:品牌(brand)價格(price)
    • 行爲:打電話(call),發信息(sendMessage)玩遊戲(playGame)

06.05_面向對象(學生類的使用)(掌握)

  • A:文件名問題
    • 在一個java文件中寫兩個類:一個基本的類,一個測試類。
    • 建議:文件名稱和測試類名稱一致。
  • B:如何使用對象?
    • 創建對象並使用
    • 格式:類名 對象名 = new 類名();
  • D:如何使用成員變量呢?
    • 對象名.變量名
  • E:如何使用成員方法呢?
    • 對象名.方法名(…)

06.06_面向對象(手機類的使用)(掌握)

  • A:學生自己完成
    • 模仿學生類,讓學生自己完成

06.07_面向對象(一個對象的內存圖)(掌握)

  • A:畫圖演示
    • 一個對象

06.08_面向對象(二個對象的內存圖)(瞭解)

  • A:畫圖演示
    • 二個不同的對象

06.09_面向對象(三個引用兩個對象的內存圖)(瞭解)

  • A:畫圖演示
    • 三個引用,有兩個對象的引用指向同一個地址

06.10_面向對象(成員變量和局部變量的區別)(掌握)

  • A:在類中的位置不同
    • 成員變量:在類中方法外
    • 局部變量:在方法定義中或者方法聲明上
  • B:在內存中的位置不同
    • 成員變量:在堆內存(成員變量屬於對象,對象進堆內存)
    • 局部變量:在棧內存(局部變量屬於方法,方法進棧內存)
  • C:生命週期不同
    • 成員變量:隨着對象的創建而存在,隨着對象的消失而消失
    • 局部變量:隨着方法的調用而存在,隨着方法的調用完畢而消失
  • D:初始化值不同

    • 成員變量:有默認初始化值
    • 局部變量:沒有默認初始化值,必須定義,賦值,然後才能使用。
  • 注意事項:

    • 局部變量名稱可以和成員變量名稱一樣,在方法中使用的時候,採用的是就近原則。
    • 基本數據類型變量包括哪些:byte,short,int,long,float,double,boolean,char
    • 引用數據類型變量包括哪些:數組,類,接口,枚舉

06.11_面向對象(方法的形式參數是類名的時候如何調用)(掌握)

  • A:方法的參數是類名

    public void print(Student s){}//print(new Student());
    
    • 如果你看到了一個方法的形式參數是一個類類型(引用類型),這裏其實需要的是該類的對象。

06.12_面向對象(匿名對象的概述和應用)(掌握)

  • A:什麼是匿名對象
    • 沒有名字的對象
  • B:匿名對象應用場景
    • a:調用方法,僅僅只調用一次的時候。
      • 那麼,這種匿名調用有什麼好處嗎?
        • 節省代碼
      • 注意:調用多次的時候,不適合。匿名對象調用完畢就是垃圾。可以被垃圾回收器回收。
    • b:匿名對象可以作爲實際參數傳遞
  • C:案例演示

    • 匿名對象應用場景

      class Demo2_Car {
      public static void main(String[] args) {
          /*Car c1 = new Car();           //創建有名字的對象
          c1.run();
          c1.run();
      
          new Car().run();            //匿名對象調用方法
          new Car().run();    */      //匿名對象只適合對方法的一次調用,因爲調用多次就會產生多個對象,不如用有名字的對象  
      
          //匿名對象是否可以調用屬性並賦值?有什麼意義?
          /*
          匿名對象可以調用屬性,但是沒有意義,因爲調用後就變成垃圾
          如果需要賦值還是用有名字對象
          */
          new Car().color = "red";
          new Car().num = 8;
          new Car().run();//null .... 0
      }
      }
      
      class Car {
      String color;           //顏色
      int num;                //輪胎數
      
      public void run() {
          System.out.println(color + "..." + num);
      }
      }
      

06.13_面向對象(封裝的概述)(掌握)

  • A:封裝概述

    • 是指隱藏對象的屬性和實現細節,僅對外提供公共訪問方式。
  • B:封裝好處

    • 隱藏實現細節,提供公共的訪問方式
    • 提高了代碼的複用性
    • 提高安全性。
  • C:封裝原則
    • 將不需要對外提供的內容都隱藏起來。
    • 把屬性隱藏,提供公共方法對其訪問。

06.14_面向對象(private關鍵字的概述和特點)(掌握)

  • A:人類賦值年齡的問題
  • B:private關鍵字特點
    • a:是一個權限修飾符
    • b:可以修飾成員變量和成員方法
    • c:被其修飾的成員只能在本類中被訪問
  • C:案例演示

    • 封裝和private的應用:
    • A:把成員變量用private修飾
    • B:提供對應的getXxx()和setXxx()方法
    • private僅僅是封裝的一種體現形式,不能說封裝就是私有

      class Demo1_Person {
          public static void main(String[] args) {
              Person p1 = new Person();
              p1.name = "張三";         //調用姓名屬性並賦值
              //p1.age = -17;             //調用年齡屬性並賦值
              //p1.speak();                   //調用行爲
      
              p1.setAge(-17);
      
              System.out.println(p1.getAge());
          }
      }
      
      class Person {
          String name;                    //姓名
          private int age;                //年齡
      
          public void setAge(int a) {     //設置年齡
              if (a > 0 && a < 200) {
                  age = a;
              }else {
                  System.out.println("請回火星吧,地球不適合你");
              }
      
          }
      
          public int getAge() {           //獲取年齡
              return age;
          }
      
          public void speak() {
              System.out.println(name + "..." + age);
          }
      }
      

06.15_面向對象(this關鍵字的概述和應用)(掌握)

  • A:this關鍵字特點
    • 代表當前對象的引用
  • B:案例演示
    • this的應用場景
    • 用來區分成員變量和局部變量重名

06.16_面向對象(手機類代碼及其測試)(掌握)

  • A:學生練習

    • 請把手機類寫成一個標準類,然後創建對象測試功能。

      class Demo2_Phone {
          public static void main(String[] args) {
              Phone p1 = new Phone();
              p1.setBrand("三星");
              p1.setPrice(5288);
      
              System.out.println(p1.getBrand() + "..." + p1.getPrice());
              p1.call();
              p1.sendMessage();
              p1.playGame();
          }
      }
      /*
      手機類
          屬性:品牌brand,價格price
          行爲:打電話call,發短信sendMessage,玩遊戲,playGame
      */
      class Phone {                               //java bean
          private String brand;                   //品牌
          private int price;                      //價格
      
          public void setBrand(String brand) {    //設置品牌
              this.brand = brand;
          }
      
          public String getBrand() {              //獲取品牌
              return this.brand;                  //this.可以省略,你不加系統會默認給你加
          }
      
          public void setPrice(int price) {       //設置價格
              this.price = price;
          }
      
          public int getPrice() {                 //獲取價格
              return price;
          }
      
          public void call() {                    //打電話
              System.out.println("打電話");
          }
      
          public void sendMessage() {             //發短信
              System.out.println("發短信");
          }
      
          public void playGame() {                //玩遊戲
              System.out.println("玩遊戲");
          }
      }
      

06.17_day06總結

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