色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

全面講解?向對象編程三?特性 1

jf_78858299 ? 來源:小牛呼嚕嚕 ? 作者:小牛呼嚕嚕 ? 2023-02-09 14:24 ? 次閱讀

封裝

把客觀事物封裝成抽象的類,并且類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏。封裝是面向對象的特征之一,是對象和類概念的主要特性。

通俗地說,一個類就是一個封裝了數據以及操作這些數據的代碼的邏輯實體。在一個對象內部,某些代碼或某些數據可以是私有的,不能被外界訪問。

通過這種方式,對象對內部數據提供了不同級別的保護,以防止程序中無關的部分意外的改變或錯誤地使用了對象的私有部分。但是如果?個類沒有提供給外界訪問的?法,那么這個類也沒有什么意義了。

我們來看一個常見的 類,比如:Student

public class Student implements Serializable {
    
    private Long id;
    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

將對象中的成員變量進行私有化,外部程序是無法訪問的。對外提供了訪問的方式,就是set和get方法。

而對于這樣一個實體對象,外部程序只有賦值和獲取值的權限,是無法對內部進行修改

繼承

繼承 就是子類繼承父類的特征和行為,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。

Java 中通過 extends 關鍵字可以申明一個類是從另外一個類繼承而來的,一般形式如下:

class 父類 {
}
 
class 子類 extends 父類 {
}

繼承概念的實現方式有二類:實現繼承接口繼承

實現繼承是指直接使用基類的屬性和方法而無需額外編碼的能力

接口繼承是指僅使用屬性和方法的名稱、但是子類必須提供實現的能力

一般我們繼承基本類和抽象類用 extends 關鍵字,實現接口類的繼承用 implements 關鍵字。

注意點:

通過繼承創建的新類稱為“子類”或“派生類”,被繼承的類稱為“基類”、“父類”或“超類”。

繼承的過程,就是從一般到特殊的過程。要實現繼承,可以通過“繼承”(Inheritance)和“組合”(Composition)來實現。

子類可以擁有父類的屬性和方法。

子類可以擁有自己的屬性和方法, 即?類可以對?類進?擴展。

子類可以重寫覆蓋父類的方法。

JAVA 只支持單繼承 ,即一個子類只允許有一個父類,但是可以實現多級繼承,及子類擁有唯一的父類,而父類還可以再繼承。

使用 implements 關鍵字可以變相的使java具有多繼承的特性,使用范圍為類繼承接口的情況,可以同時繼承多個接口(接口跟接口之間采用逗號分隔)。

# implements 關鍵字

public interface A {
    public void eat();
    public void sleep();
}
 
public interface B {
    public void show();
}
 
public class C implements A,B {
}

值得留意的是:關于父類私有屬性和私有方法的繼承 的討論

這個網上 有大量的爭論,我這邊以Java官方文檔為準:

With the use of the extends keyword, the subclasses will be able to inherit all the properties of the superclass except for the private properties of the superclass.

子類不能繼承父類的 私有屬性事實),但是如果子類中公有的方法影響到了父類私有屬性,那么私有屬性是能夠被子類使用的。

官方文檔 明確說明:privatefinal不被繼承,但從內存的角度看的話:父類private屬性是會存在于子類對象中的。

通過繼承的方法(比如,public方法)可以訪問到父類的private屬性

如果子類中存在與父類private方法簽名相同的方法,其實相當于覆蓋

個人覺得文章里的一句話很贊,我們不可能完全繼承父母的一切(如性格等),但是父母的一些無法繼承的東西卻仍會深刻的影響著我們。

多態

同一個行為具有多個不同表現形式或形態的能力就是 多態 。網上的爭論很多,筆者個人認同網上的這個觀點:重載也是多態的一種表現,不過多態主要指運行時多態

Java 多態可以分為 重載式多態重寫式多態

-重載式多態,也叫編譯時多態。編譯時多態是靜態的,主要是指方法的重載,它是根據參數列表的不同來區分不同的方法。通過編譯之后會變成兩個不同的方法,在運行時談不上多態。也就是說這種多態再編譯時已經確定好了。

-重寫式多態,也叫運行時多態。運行時多態是動態的,主要指繼承父類和實現接口時,可使用父類引用指向子類對象實現。 這個就是大家通常所說的多態性

這種多態通過動態綁定(dynamic binding)技術來實現,是指在執行期間判斷所引用對象的實際類型,根據其實際的類型調用其相應的方法。也就是說,只有程序運行起來,你才知道調用的是哪個子類的方法。這種多態可通過函數的重寫以及向上轉型來實現。

多態存在的三個必要條件:

繼承

重寫

父類引用指向子類對象:Parent p = new Child();

我們一起來看個例子,仔細品讀代碼,就明白了:

@SpringBootTest
class Demo2021ApplicationTests {

    class Animal {
        public void eat(){
            System.out.println("動物吃飯!");
        }
        public void work(){
            System.out.println("動物可以幫助人類干活!");
        }
    }

    class Cat extends Animal {
        public void eat() {
            System.out.println("吃魚");
        }
        public void sleep() {
            System.out.println("貓會睡懶覺");
        }
    }

    class Dog extends Animal {
        public void eat() {
            System.out.println("吃骨頭");
        }
    }

    @Test
    void contextLoads() {
        //part1
        Cat cat_ = new Cat();
        cat_.eat();
        cat_.sleep();
        cat_.work();

        //part2
        Animal cat=new Cat();
        cat.eat();
        cat.work();
        cat.sleep();//此處編譯會報錯。

        Animal dog=new Dog();
        dog.eat();//結果為:吃骨頭。此處調用子類的同名方法。
        
  //part3
        //如果想要調用父類中沒有的方法,則要向下轉型,這個非常像"強轉"
        Cat cat222 = (Cat)cat;        // 向下轉型(注意,如果是(Cat)dog 則會報錯)
        cat222.sleep();        //結果為:貓會睡懶覺。 可以調用 Cat 的 sleep()
    }



}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7128

    瀏覽量

    89365
  • 封裝
    +關注

    關注

    127

    文章

    7982

    瀏覽量

    143243
  • 代碼
    +關注

    關注

    30

    文章

    4820

    瀏覽量

    68881
收藏 人收藏

    評論

    相關推薦

    嵌入式C語言面向對象編程---多態

    前兩篇文章主要講述了 C 語言面向對象編程– 封裝和繼承。本篇文章繼續來討論一下,如何使用 C 語言實現面向對象編程的另一個重要特性:多態。
    發表于 10-31 14:41 ?1037次閱讀

    Python的面向對象編程詳解

    一般編程可分為面向過程編程,和面向對象編程。Python的面向對象編程,與Java的面向
    發表于 09-04 16:35 ?590次閱讀
    Python的面向<b class='flag-5'>對象</b><b class='flag-5'>編程</b>詳解

    每日一教labview視頻教程【12.15】labview面向對象編程(上)

    面向對象編程視頻:專家從類開始進行講解,詳細說明了如何進行面向對象編程。http://yunpan.cn/lk/480ep
    發表于 12-15 10:35

    【原創視頻】小草手把手LABVIEW之OOP面向對象編程基礎(1

    =a2hzp.8244740.0.0-------------------------------------視頻內容:LabVIEW面向對象編程OOP介紹(分多個小節,本視頻只是最初一個小節,只是介紹)時長:14分鐘
    發表于 05-23 01:02

    編程魔法師大思想視頻宣傳片

    講解了單片機裸編程項目的設計實現過程,并通過一只電機對象到兩只電機對象的設計演變過程,深入講解了數碼分離、線程實現、
    發表于 04-23 21:46

    LabVIEW面向對象的ActorFramework(1

    、維護、迭代。如果想要更好的學習這個概念,推薦兩本講解的面向對象編程很經典的圖書:1.《面向對象的思考過程》2.《面向
    發表于 02-10 14:09

    面向對象編程及其特性 精選資料分享

    編程語言分為面向過程編程、函數式編程和面向對象編程。其實python就是一種面向對象
    發表于 07-21 08:38

    面向對象編程介紹

    目錄一、面向對象編程介紹1.面向過程編程2.函數式編程3.面向對象
    發表于 12-13 07:22

    C++面向對象多線程編程 (pdf電子版)

    C++面向對象多線程編程共分13章,全面講解構建多線程架構與增量多線程編程技術。第1章介紹了
    發表于 09-25 09:39 ?0次下載

    對象特性的測定

    對象特性的測定 一、 實驗目的1、通過實驗了解對象的靜態和動態特性;2、掌握對象靜態和動態
    發表于 05-17 10:53 ?14次下載

    面向對象編程練習

    實驗 3 面向對象編程練習 一、實驗目的     通過編程和上機實驗理解 Java 語言是如何體現面向對象編程
    發表于 09-23 18:57 ?3060次閱讀

    LabVIEW 網絡講壇第四季:面向對象編程的應用

    本視頻主要講解了基本概念,以及面向對象編程在LabVIEW中的應用。
    的頭像 發表于 06-25 02:46 ?2921次閱讀
    LabVIEW 網絡講壇第四季:面向<b class='flag-5'>對象</b>的<b class='flag-5'>編程</b>的應用

    Labview面向對象編程快速入門教程

    在面向對象編程中, 類用來表示通用特性。 例如,假設有一個描述汽車的類。 類中定義了各種汽車的通用特性對象是類的特定實例。汽車類的一個
    發表于 07-31 08:00 ?83次下載
    Labview面向<b class='flag-5'>對象</b><b class='flag-5'>編程</b>快速入門教程

    全面講解?對象編程?特性 2

    這塊就比較特殊了,我們一句句來看 `Animal cat=new Cat();` 像這種這個 `父類引用指向子類對象`,這種現象叫做:**"向上轉型"**,也被稱為**多態
    的頭像 發表于 02-09 14:25 ?317次閱讀
    <b class='flag-5'>全面</b><b class='flag-5'>講解</b>?<b class='flag-5'>向</b><b class='flag-5'>對象</b><b class='flag-5'>編程</b><b class='flag-5'>三</b>?<b class='flag-5'>特性</b> 2

    西門子PLC面向對象編程

    面向對象編程是計算機高級語言的一種高級編程模式,這種設計思想也可以應用于工業控制系統的plc程序中。雖然我們 無法實現面向對象編程的許多優
    發表于 04-17 11:41 ?7次下載
    西門子PLC面向<b class='flag-5'>對象</b><b class='flag-5'>編程</b>
    主站蜘蛛池模板: 美女议员被泄裸照| 国产精品视频人人做人人爽| 中文有码中文字幕免费视频| 99久久就热视频精品草| 国产成人自产拍免费视频| 久久精品综合电影| 青青精品视频国产| 野草视频在线观看| 久久亚洲精品成人| 久久国产综合精品欧美| 日本久久久免费高清| 长泽梓黑人初解禁bdd07| 国产成人精品男人的天堂网站 | 国产精品亚洲欧美| 暖暖 免费 高清 日本在线| 亚洲欧美中文字幕5发布| 亚洲人成影院在线播放| 成年人视频在线免费看| 毛片免费观看的视频| 免费光看午夜请高视频| 亚洲国产精品天堂在线播放 | 亚洲精品午睡沙发系列| 囯产精品一品二区三区| 啪啪羞羞GIF男女0OXX动态图| 又硬又粗又大一区二区三区视频| 中文字幕99香蕉在线| 国产午夜精品理论片免费观看| 日韩一区二区三区精品| 99热这里只有精品| 麻豆产精品一二三产区区| 越南女子杂交内射BBWXZ| xxxx俄罗斯1819| 美女MM131爽爽爽| 中文字幕天堂久久精品| 韩国演艺圈悲惨在线| 久久强奷乱码老熟女| 亚洲电影二区| 国产在线公开视频| 毛片TV网站无套内射TV网站| 樱桃BT在线观看| 娇女的呻吟亲女禁忌h16|