日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面向对象

發(fā)布時間:2024/8/1 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面向对象 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一. 面向?qū)ο蟮乃枷?/h2>
  • 定義
    • 面向?qū)ο髤^(qū)別于面向過程而存在的, 在早期的編程語言中, 我們是先固定功能,然后根據(jù)功能來編寫代碼, 每一個功能對應(yīng)一段代碼. 這段代碼只能完成本功能
    • 這樣做的方式及其繁瑣, 代碼量太大, 而且檢查代碼會發(fā)給巨額的時間, 為了提高效率, 人們將一些可以重復(fù)使用的代碼提取出來, 封裝成一個方法, 這樣就達到 了重復(fù)使用的目的
    • 再后來, 我們將一些性質(zhì)相近的方法放到一起, 就出現(xiàn)了一個類. 我們將可以完成一系列功能的類稱之為對象
    • 所謂的對象, 就是具有一定功能的獨立個體
    • 不再局限于完成固定功能, 不在局限于代碼的實現(xiàn), 以創(chuàng)造具備某些功能的個 體, 讓這些個體去完成我們的指令為編程方式, 這就是面向?qū)ο蟮乃枷?/li>
  • 說明
    • 早期的編程語言更像是程序員自己去執(zhí)行命令, 比如說掃地, 我需要先拿到掃把,然后從一個地方開始, 揮舞掃把, 到一個地方結(jié)束, 然后回頭,重復(fù)掃地動作,直到結(jié)束,然后將掃把放回原處. 每次掃地都需要重復(fù)這樣的步驟
    • 面向?qū)ο蟮淖兂烧Z言更像是創(chuàng)造一個仆人, 你只需要告訴仆人, 將那個地方打掃 干凈,仆人就會自己去做這件事.中間的步驟我只要設(shè)定一次就行. 這樣的結(jié)果就是, 程序員得到了解放
  • 特點
    • 更符合人類的思想習慣
    • 將復(fù)雜的事情簡單化
    • 將我們從執(zhí)行者變成了指揮者
  • 開發(fā)過程和設(shè)計
    • 就是不斷的創(chuàng)造對象, 使用對象,指揮對象去做事情
    • 面向?qū)ο缶幊痰脑O(shè)計其實就是在管理和維護對象之間的關(guān)系
  • 面向?qū)ο蟮奶攸c
    • 封裝 : 分類整理 和 保護
    • 繼承
    • 多態(tài)
    • 抽象
  • 二. 類的使用

  • 定義

    • 我們學習編程的目的就是為了將生活中的事和物用程序語言描述出來
  • 如何描述

    • 生活中的描述
      • 屬性 就是該實物的信息(事物身上的名詞)
      • 行為 就是該事物能夠做什么(事物身上的動詞)
    • java中的描述
      • 成員變量 就是事物的屬性
      • 成員方法 就是事物的行為
    • 我們描述的是一類事物
  • 如何用java定義

    • 成員變量 等同于局部變量 , 只是位置發(fā)生了變化 , 在類中, 方法外
    • 成員方法 等同于以前定義的方法 , static 暫時不要了
  • 演示

    • 定義學生類

      • 學生有學號, 姓名, 年齡, 班級 , 成績
      • 學生會吃飯, 睡覺, 學習
      public class Student {//定義學號String num = "H001";//定義姓名String name = "小明";//定義年齡int age = 18;//定義班級String calssnum = "1710";//定義成績int score = 100;//定義吃飯方法public void eat(){System.out.println("吃飯");}//定義睡覺方法public void sleep(){System.out.println("睡覺");}//定義學習方法public void study(){System.out.println("學java");} }
  • 測試題

    • 定義手機類
      • 手機有品牌, 型號屬性
      • 手機有上網(wǎng), 打電話的功能
    • 定義老師類
      • 老師有 姓名, 年齡, 顏值屬性
      • 老師有 教學,審批作業(yè)的功能
  • 注意事項

    • 類的作用是用來封裝變量和方法

    • 類是死物, 不能直接使用, 類似于圖紙

  • 三. 對象

  • 定義

    • 在java中, 我們想要使用定義的類來做工作, 就必須先將這個類激活
    • 激活之后的類叫做對象, 一個類可以有多個對應(yīng)的對象,就像是拿圖紙造出實物
  • 格式

    • 通過new關(guān)鍵字來創(chuàng)建對象
    • 類名 對象名 = new 類名();
    • Student student = new Student();
  • 對象中成員的調(diào)用

    • 通過對象名來調(diào)用
    • 對象名.變量名
    • 對象名.方法名();
  • 演示

    public static void main(String[] args) {Student student = new Student();//調(diào)用對象的屬性String name = student.name;System.out.println(name);//調(diào)用對象的方法student.eat();student.sleep();student.study(); }
  • 對象中屬性值

    • 定義類的時候, 如果類中的屬性有值, 創(chuàng)建的對象中的屬性也會是這個值
    • 定義類的時候, 如果類中的屬性沒有具體指, 創(chuàng)建的對象中的屬性會有一個默認值
    • 一般來說, 類描述的應(yīng)該是一類事物, 而不應(yīng)該簡簡單單是一個具體的事物
  • 對象屬性賦值

    • 我可以對對象中屬性的值作出更改

    • 對象名.屬性名 = 值;

      public static void main(String[] args) {//一個對象名引用一個實例對象Student student = new Student();//打印結(jié)果是小明System.out.println(student.name);//給對象賦值student.name = "小剛";//打印結(jié)果是小剛System.out.println(student.name); }
  • 測試題

    • 定義汽車類的屬性 品牌 , 顏色 , 長度
    • 定義汽車類的方法, 點火, 開動
    • 創(chuàng)建不同品牌的汽車實例, 并調(diào)用方法
  • 測試題

    • 定義人類的屬性, 姓名, 年齡, 性別
    • 定義人類的方法, 工作, 睡覺, 自我介紹
    • 創(chuàng)建不同的人的實例對象, 并調(diào)用方法,打印屬性數(shù)據(jù)
  • 四. 對象和類的內(nèi)存

  • 存儲位置

    • 類存儲于內(nèi)存中的方法區(qū)內(nèi), 只有一份
    • new出來的對象存儲于內(nèi)存中的堆內(nèi)存中, 同一個類的對象可以有多個
  • 使用問題

    • 類無法直接使用, 是一個骨架,圖紙
    • 對象可以使用其中的成員, 是活的, 具體實物
  • 引用問題

    • 一個對象名引用一個實例對象
    • 多個對象名引用不同的實例對象
    • 多個對象名引用相同的實例對象
    public static void main(String[] args) {//一個對象名引用一個實例對象Student student = new Student();//多個對象名引用不同的實例對象Student student2 = new Student();//比較兩個對象表示的地址值System.out.println(student==student2);//多個對項名引用相同的實例對象Student student3 = student;System.out.println(student==student3);}
  • 五. 成員變量和局部變量

  • 定義

    • 成員變量屬于類或?qū)ο? 使用對象名可以直接掉用
    • 局部變量屬于方法, 對象無法直接調(diào)用, 只能在運行方法的時候運行
  • 區(qū)別

    • 在類中的位置不同

      • 成員變量:在類中方法外
      • 局部變量:定義在方法中或者方法聲明上
      public class Student {String name ;public void method(){//方法內(nèi)的局部變量String name ;}//方法聲明上的局部變量public void method(String name){}}
    • 在內(nèi)存中的位置不同

      • 成員變量:在堆內(nèi)存(成員變量屬于對象,對象進堆內(nèi)存)
      • 局部變量:在棧內(nèi)存(局部變量屬于方法,方法進棧內(nèi)存)
    • 生命周期不同 (誕生 - 活著 - 消亡)

      • 成員變量 : 隨著對象的創(chuàng)建而存在 , 隨著對象的消亡而消亡
      • 局部變量 : 隨著方法的調(diào)用而存在 , 隨著方法的結(jié)束而消亡
    • 初始化值不同

      • 成員變量 : 有默認值, 是在對象創(chuàng)建的過程中jvm設(shè)置的默認值
      • 局部變量 : 沒有默認值, 必須在使用之前賦值
      public class Student {//可以不賦值, 創(chuàng)建對象的時候會有一個默認值String name ;public void method(){//使用前必須賦值String name ;//這里會報錯//System.out.println(name);}//在調(diào)用方法執(zhí)行之前必須給參數(shù)賦值,不然會報錯public void method(String name){}}
  • 注意事項

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

    • 判斷結(jié)果
    public class Student {String name = "小明";} public class TestDemo{public static void main(String[] args) {Student student = new Student();System.out.println(student.name);//判斷結(jié)果student.name = "張三";Student student2 = new Student();System.out.println(student2.name); //判斷結(jié)果} }
    • 判斷結(jié)果
    public class Student {String name = "小明";public void method(){String name = "張三";System.out.println(name);}public void method(int age){System.out.println(name);}}public static void main(String[] args) {Student student = new Student();student.method(); //判斷結(jié)果student.method(15); //判斷結(jié)果 }
  • 六. 匿名對象

  • 定義

    • 沒有名字的對象
  • 應(yīng)用場景

    • 當前方法內(nèi), 對象只使用一次的情況
  • 演示

    • 司機開車
    public class Car {public void fire(){System.out.println("車子啟動了");}public void run(){System.out.println("車子飛馳而去");} }public class Driver {public void drive(Car car){//調(diào)用汽車的點火和開動方法car.fire();car.run();} }public static void main(String[] args) {Driver driver = new Driver();//調(diào)用司機的開車方法driver.drive(new Car()); }
  • 七. private 關(guān)鍵字

  • 定義

    • 一個權(quán)限修飾符
    • 可以修飾成員變量和成員方法
    • 被其修飾的成員只能在本類中使用
  • 作用

    • 限定使用范圍, 禁止別人調(diào)用類的成員
    • 保證數(shù)據(jù)的安全性, 可以通過方法中的代碼對有害數(shù)據(jù)進行過濾
  • 演示

    • 對年齡的有害信息進行過濾
    public class Person {private int age;public void setAge(int age2){//符合規(guī)則的信息才去賦值if (age2 > 0 && age2 < 150) {age = age2;}else{System.out.println("年齡信息不對");}}//獲取年齡信息public int getAge(){return age;} }
  • JavaBean POJO

    • 類中的屬性全部私有化
    • 通過getter 和 setter方法進行設(shè)置
    • 提供toString方法用來描述對象
    • javabean的主要作用是運送數(shù)據(jù)
    public class Person {private String name;private int age;//name的getter方法public String getName() {return name;}//name的setter方法public void setName(String name) {this.name = name;}//age的getter方法public int getAge() {return age;}//age的setter方法public void setAge(int age) {this.age = age;}public String toString(){return name +","+ age;} }
  • 測試題

    • 判斷結(jié)果

      public class Person {private String name = "小明";public void method(){System.out.println(name);//判斷是或否成立} }public static void main(String[] args) {Person person = new Person();person.method(); }
    • 判斷結(jié)果

      public class Person {private String name = "小明";private void method(){System.out.println(name);}}public static void main(String[] args) {Person person = new Person();person.method(); }
  • 八. this關(guān)鍵字

  • 定義

    • 代表本類對象的引用
    • 用來區(qū)分重名的成員變量和局部變量
  • 注意事項

    • 只能在本類方法中使用
    • 本類的靜態(tài)方法中無法使用
    • 當我們創(chuàng)建對象并調(diào)用對象的方法時, 方法中如果出現(xiàn)了this,指的調(diào)用這個方法的對象
    • 本類對象中的方法調(diào)用本類中的其他方法時, 其實被調(diào)用方法的前面就有一個省略的this
  • 演示

    public class Person {private String name = "小明";public void method(){String name = "李四";System.out.println(name);System.out.println(this.name);//這里就有一個省略的thismethod2();//this.method2();}public void method2(){System.out.println("方法2");} }public static void main(String[] args) {Person person = new Person();person.method(); }
  • 總結(jié)

  • 定義類

    類的作用 : 對變量和方法進行封裝

    單獨封裝方法

    單獨封裝變量

    封裝方法和變量

  • 對象

    類是一個模板, 不能直接使用, 需要創(chuàng)建對象

    類名 對象名 = new 類名();

  • 使用對象

    對象名.成員變量

    對象名.方法()

  • 面向?qū)ο?/p>

    我們java開發(fā)人員每天都在跟對象打交道, 所以我們稱之為 面向?qū)ο缶幊?/p>

  • 成員變量和局部變量

    書寫的位置不同 成員變量在類中方法外, 局部變量在方法內(nèi)

    內(nèi)存中的位置不同 : 成員變量在堆, 局部變量在棧

    生命周期不同 : 成員變量隨著對象走, 局部變量隨著方法走(方法進棧了才有意義)

    初始化值不同 : 成員變量有默認值, 局部變量沒有, 必須手動賦值

  • 匿名對象

    當一個對象在當前方法內(nèi)只使用一次, 那么我們可以直接使用, 不用定義對象名

    優(yōu)點 : 少寫代碼

    缺點 : 對象只能使用一次

  • private關(guān)鍵字

    私有化 ,保護成員

    JavaBean : 但一個類只被用于存儲運輸數(shù)據(jù), 沒有任何功能性方法 ,

    ? 一般來說, 我們需要對所有成員變量私有化, 提供getter和setter方法,提供toString方法

    ? 這樣類的創(chuàng)建的對象, 我們稱之為 JavaBean

  • this

    用于區(qū)分成員變量和局部變量

  • 作業(yè)

  • 第一題
    • 使用編程語言描述小狗,并調(diào)用方法打印屬性
      • 屬性 : 品種 , 性別 , 年齡
      • 方法 : 吃飯, 看門 , toString()
  • 第二題
    • 使用編程語言描述桌子, 并調(diào)用方法
      • 屬性 : 材質(zhì), 高度 , 形狀
      • 方法 : 存放物品 , toString()
  • 第三題
    • 創(chuàng)建一個動物類
      • 屬性 : 物種, 年齡, 性別
      • 方法 : 吃飯, 睡覺
    • 創(chuàng)建小貓和小狗兩個對象, 分別調(diào)用其方法
  • 第四題
    • 創(chuàng)建一個人類
      • 屬性 : 姓名, 年齡, 性別
      • 方法 : 睡覺, 工作 , 自我介紹
    • 定義不同的方法內(nèi)容, 并調(diào)用
  • 擴展題
    • 學校有教學功能, 但是需要先聘請老師來授課, 現(xiàn)在一個學校有java , h5兩門課程, 編程模擬
  • 擴展題
    • 創(chuàng)建一個學生的javabean, 從鍵盤接受數(shù)據(jù)存儲到學生對象中,打印學生對象信息
  • 總結(jié)

    以上是生活随笔為你收集整理的面向对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。