在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

全面講解?向?qū)ο缶幊倘?特性 1

jf_78858299 ? 來(lái)源:小牛呼嚕嚕 ? 作者:小牛呼嚕嚕 ? 2023-02-09 14:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

封裝

把客觀事物封裝成抽象的類,并且類可以把自己的數(shù)據(jù)和方法只讓可信的類或者對(duì)象操作,對(duì)不可信的進(jìn)行信息隱藏。封裝是面向?qū)ο蟮奶卣髦唬菍?duì)象和類概念的主要特性。

通俗地說(shuō),一個(gè)類就是一個(gè)封裝了數(shù)據(jù)以及操作這些數(shù)據(jù)的代碼的邏輯實(shí)體。在一個(gè)對(duì)象內(nèi)部,某些代碼或某些數(shù)據(jù)可以是私有的,不能被外界訪問(wèn)。

通過(guò)這種方式,對(duì)象對(duì)內(nèi)部數(shù)據(jù)提供了不同級(jí)別的保護(hù),以防止程序中無(wú)關(guān)的部分意外的改變或錯(cuò)誤地使用了對(duì)象的私有部分。但是如果?個(gè)類沒(méi)有提供給外界訪問(wèn)的?法,那么這個(gè)類也沒(méi)有什么意義了。

我們來(lái)看一個(gè)常見的 類,比如: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;
    }

}

將對(duì)象中的成員變量進(jìn)行私有化,外部程序是無(wú)法訪問(wèn)的。對(duì)外提供了訪問(wèn)的方式,就是set和get方法。

而對(duì)于這樣一個(gè)實(shí)體對(duì)象,外部程序只有賦值和獲取值的權(quán)限,是無(wú)法對(duì)內(nèi)部進(jìn)行修改

繼承

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

Java 中通過(guò) extends 關(guān)鍵字可以申明一個(gè)類是從另外一個(gè)類繼承而來(lái)的,一般形式如下:

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

繼承概念的實(shí)現(xiàn)方式有二類:實(shí)現(xiàn)繼承接口繼承

實(shí)現(xiàn)繼承是指直接使用基類的屬性和方法而無(wú)需額外編碼的能力

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

一般我們繼承基本類和抽象類用 extends 關(guān)鍵字,實(shí)現(xiàn)接口類的繼承用 implements 關(guān)鍵字。

注意點(diǎn):

通過(guò)繼承創(chuàng)建的新類稱為“子類”或“派生類”,被繼承的類稱為“基類”、“父類”或“超類”。

繼承的過(guò)程,就是從一般到特殊的過(guò)程。要實(shí)現(xiàn)繼承,可以通過(guò)“繼承”(Inheritance)和“組合”(Composition)來(lái)實(shí)現(xiàn)。

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

子類可以擁有自己的屬性和方法, 即?類可以對(duì)?類進(jìn)?擴(kuò)展。

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

JAVA 只支持單繼承 ,即一個(gè)子類只允許有一個(gè)父類,但是可以實(shí)現(xiàn)多級(jí)繼承,及子類擁有唯一的父類,而父類還可以再繼承。

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

# implements 關(guān)鍵字

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

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

這個(gè)網(wǎng)上 有大量的爭(zhēng)論,我這邊以Java官方文檔為準(zhǔn):

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.

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

官方文檔 明確說(shuō)明:privatefinal不被繼承,但從內(nèi)存的角度看的話:父類private屬性是會(huì)存在于子類對(duì)象中的。

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

如果子類中存在與父類private方法簽名相同的方法,其實(shí)相當(dāng)于覆蓋

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

多態(tài)

同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力就是 多態(tài) 。網(wǎng)上的爭(zhēng)論很多,筆者個(gè)人認(rèn)同網(wǎng)上的這個(gè)觀點(diǎn):重載也是多態(tài)的一種表現(xiàn),不過(guò)多態(tài)主要指運(yùn)行時(shí)多態(tài)

Java 多態(tài)可以分為 重載式多態(tài)重寫式多態(tài)

-重載式多態(tài),也叫編譯時(shí)多態(tài)。編譯時(shí)多態(tài)是靜態(tài)的,主要是指方法的重載,它是根據(jù)參數(shù)列表的不同來(lái)區(qū)分不同的方法。通過(guò)編譯之后會(huì)變成兩個(gè)不同的方法,在運(yùn)行時(shí)談不上多態(tài)。也就是說(shuō)這種多態(tài)再編譯時(shí)已經(jīng)確定好了。

-重寫式多態(tài),也叫運(yùn)行時(shí)多態(tài)。運(yùn)行時(shí)多態(tài)是動(dòng)態(tài)的,主要指繼承父類和實(shí)現(xiàn)接口時(shí),可使用父類引用指向子類對(duì)象實(shí)現(xiàn)。 這個(gè)就是大家通常所說(shuō)的多態(tài)性

這種多態(tài)通過(guò)動(dòng)態(tài)綁定(dynamic binding)技術(shù)來(lái)實(shí)現(xiàn),是指在執(zhí)行期間判斷所引用對(duì)象的實(shí)際類型,根據(jù)其實(shí)際的類型調(diào)用其相應(yīng)的方法。也就是說(shuō),只有程序運(yùn)行起來(lái),你才知道調(diào)用的是哪個(gè)子類的方法。這種多態(tài)可通過(guò)函數(shù)的重寫以及向上轉(zhuǎn)型來(lái)實(shí)現(xiàn)。

多態(tài)存在的三個(gè)必要條件:

繼承

重寫

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

我們一起來(lái)看個(gè)例子,仔細(xì)品讀代碼,就明白了:

@SpringBootTest
class Demo2021ApplicationTests {

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

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

    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();//此處編譯會(huì)報(bào)錯(cuò)。

        Animal dog=new Dog();
        dog.eat();//結(jié)果為:吃骨頭。此處調(diào)用子類的同名方法。
        
  //part3
        //如果想要調(diào)用父類中沒(méi)有的方法,則要向下轉(zhuǎn)型,這個(gè)非常像"強(qiáng)轉(zhuǎn)"
        Cat cat222 = (Cat)cat;        // 向下轉(zhuǎn)型(注意,如果是(Cat)dog 則會(huì)報(bào)錯(cuò))
        cat222.sleep();        //結(jié)果為:貓會(huì)睡懶覺(jué)。 可以調(diào)用 Cat 的 sleep()
    }



}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7254

    瀏覽量

    91773
  • 封裝
    +關(guān)注

    關(guān)注

    128

    文章

    8651

    瀏覽量

    145362
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4899

    瀏覽量

    70620
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    嵌入式C語(yǔ)言面向對(duì)象編程---多態(tài)

    前兩篇文章主要講述了 C 語(yǔ)言面向對(duì)象編程– 封裝和繼承。本篇文章繼續(xù)來(lái)討論一下,如何使用 C 語(yǔ)言實(shí)現(xiàn)面向對(duì)象編程的另一個(gè)重要特性:多態(tài)。
    發(fā)表于 10-31 14:41 ?1235次閱讀

    Python的面向對(duì)象編程詳解

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

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

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

    【原創(chuàng)視頻】小草手把手LABVIEW之OOP面向對(duì)象編程基礎(chǔ)(1

    =a2hzp.8244740.0.0-------------------------------------視頻內(nèi)容:LabVIEW面向對(duì)象編程OOP介紹(分多個(gè)小節(jié),本視頻只是最初一個(gè)小節(jié),只是介紹)時(shí)長(zhǎng):14分鐘
    發(fā)表于 05-23 01:02

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

    講解了單片機(jī)裸編程項(xiàng)目的設(shè)計(jì)實(shí)現(xiàn)過(guò)程,并通過(guò)一只電機(jī)對(duì)象到兩只電機(jī)對(duì)象的設(shè)計(jì)演變過(guò)程,深入講解了數(shù)碼分離、線程實(shí)現(xiàn)、
    發(fā)表于 04-23 21:46

    LabVIEW面向對(duì)象的ActorFramework(1

    、維護(hù)、迭代。如果想要更好的學(xué)習(xí)這個(gè)概念,推薦兩本講解的面向對(duì)象編程很經(jīng)典的圖書:1.《面向對(duì)象的思考過(guò)程》2.《面向
    發(fā)表于 02-10 14:09

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

    編程語(yǔ)言分為面向過(guò)程編程、函數(shù)式編程和面向對(duì)象編程。其實(shí)python就是一種面向對(duì)象
    發(fā)表于 07-21 08:38

    面向對(duì)象編程介紹

    目錄一、面向對(duì)象編程介紹1.面向過(guò)程編程2.函數(shù)式編程3.面向對(duì)象
    發(fā)表于 12-13 07:22

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

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

    對(duì)象特性的測(cè)定

    對(duì)象特性的測(cè)定 一、 實(shí)驗(yàn)?zāi)康?b class='flag-5'>1、通過(guò)實(shí)驗(yàn)了解對(duì)象的靜態(tài)和動(dòng)態(tài)特性;2、掌握對(duì)象靜態(tài)和動(dòng)態(tài)
    發(fā)表于 05-17 10:53 ?14次下載

    面向對(duì)象編程練習(xí)

    實(shí)驗(yàn) 3 面向對(duì)象編程練習(xí) 一、實(shí)驗(yàn)?zāi)康?    通過(guò)編程和上機(jī)實(shí)驗(yàn)理解 Java 語(yǔ)言是如何體現(xiàn)面向對(duì)象編程
    發(fā)表于 09-23 18:57 ?3152次閱讀

    LabVIEW 網(wǎng)絡(luò)講壇第四季:面向對(duì)象編程的應(yīng)用

    本視頻主要講解了基本概念,以及面向對(duì)象編程在LabVIEW中的應(yīng)用。
    的頭像 發(fā)表于 06-25 02:46 ?3109次閱讀
    LabVIEW 網(wǎng)絡(luò)講壇第四季:面向<b class='flag-5'>對(duì)象</b>的<b class='flag-5'>編程</b>的應(yīng)用

    Labview面向對(duì)象編程快速入門教程

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

    全面講解?對(duì)象編程?特性 2

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

    西門子PLC面向對(duì)象編程

    面向對(duì)象編程是計(jì)算機(jī)高級(jí)語(yǔ)言的一種高級(jí)編程模式,這種設(shè)計(jì)思想也可以應(yīng)用于工業(yè)控制系統(tǒng)的plc程序中。雖然我們 無(wú)法實(shí)現(xiàn)面向對(duì)象編程的許多優(yōu)
    發(fā)表于 04-17 11:41 ?7次下載
    西門子PLC面向<b class='flag-5'>對(duì)象</b><b class='flag-5'>編程</b>
    主站蜘蛛池模板: 亚洲黄色一区 | 人人干人人搞 | 日本午夜大片a在线观看 | 五月天丁香花婷婷 | 美国人与性xxxxxxx | 国产福利不卡一区二区三区 | 一级毛片日韩a欧美 | 一区二区三区午夜 | 九九午夜 | 日韩在线视频免费观看 | 成人在线色视频 | 午夜网站免费版在线观看 | 深夜偷偷看视频在线观看 | 51国产午夜精品免费视频 | 免费高清在线视频色yeye | 国产午夜精品久久久久免费视 | 日韩在线视频www色 日韩在线视频免费观看 | 夜夜操狠狠操 | ww欧洲ww在线视频看 | 久久最新精品 | 老师你好滑下面好湿h | www.亚洲5555.com| 四虎影院永久地址 | 免费a级午夜绝情美女视频 免费jlzzjlzz在线播放视频 | 巨骚综合网 | 韩毛片 | 未成人禁止视频高清在线观看 | 久久aa毛片免费播放嗯啊 | 免费看一级特黄a大片 | 色综合天天综合网国产成人网 | 米奇影院777 | 日本黄色大片在线观看 | 亚洲福利视频网址 | 伊人精品成人久久综合欧美 | 五月激情五月婷婷 | 怡红院最新网址 | 欧美黑粗| 老司机亚洲精品影院在线 | 午夜湿 | 久久亚洲欧美成人精品 | 日本成本人三级在线观看2018 |