第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

面向?qū)ο笤O(shè)計(jì) - 如何將一個(gè)類嵌套到另一個(gè)類中

面向?qū)ο笤O(shè)計(jì) - 如何將一個(gè)類嵌套到另一個(gè)類中

斯蒂芬大帝 2022-07-27 11:19:41
我來自關(guān)系數(shù)據(jù)庫世界,我發(fā)現(xiàn)自己必須創(chuàng)建我的第一個(gè)面向?qū)ο蟪绦?,盡管學(xué)習(xí),我還是無法掌握如何做最基本的事情。我已經(jīng)定義了一個(gè)Product類 ( int id, String productName, double price...) 及其方法和屬性,以及一個(gè)ProductFamily類 ( String familyName, String costCenter...) 具有自己的方法和屬性。應(yīng)該如何鏈接/嵌入這兩個(gè)類?我嘗試過使用帶有“extends”關(guān)鍵字的子類,但這似乎只是將方法從一個(gè)繼承到另一個(gè)。它不允許我將新產(chǎn)品對(duì)象實(shí)例化到給定的產(chǎn)品系列中。謝謝??!
查看完整描述

4 回答

?
互換的青春

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

您必須向 Product 類添加一個(gè)字段,該字段是 ProductFamily 類的對(duì)象。通過在 Product 類中添加方法 getProductFamily() ,您可以返回特定產(chǎn)品的產(chǎn)品系列。



查看完整回答
反對(duì) 回復(fù) 2022-07-27
?
手掌心

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊

可能是這樣的,假設(shè)ProductFamily和Product類之間存在 1 對(duì) N 的關(guān)系:


class ProductFamily{


    private List<Product> products;


    //add all other members and getters and setters

}

每當(dāng)您想向Product特定ProductFamily實(shí)例添加新實(shí)例時(shí),都可以Product從 getter 獲取列表并添加到其中。類中可能有另一個(gè)方法ProductFamily可以讓您將新Product實(shí)例添加到列表中。


 class ProductFamily{


    private List<Product> products;


    //add all other members and getters and setters


    public void addProduct(Product newProduct){

        this.products.add(newProduct);

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-07-27
?
慕容708150

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊

您只能在 Java 中擴(kuò)展一個(gè)類。您可以在許多課程中做到這一點(diǎn)。如果你想擴(kuò)展多個(gè)具有相同函數(shù)名的類,我會(huì)使用接口。



查看完整回答
反對(duì) 回復(fù) 2022-07-27
?
素胚勾勒不出你

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊

如果您來自關(guān)系數(shù)據(jù)庫的世界,您可能會(huì)牢牢掌握幾個(gè)相互關(guān)聯(lián)的概念,包括關(guān)系聯(lián)接、數(shù)據(jù)規(guī)范化、邏輯數(shù)據(jù)獨(dú)立性、自描述數(shù)據(jù)、ACID 事務(wù)和并發(fā)控制。如果不熟悉所有這些概念,初學(xué)者很難真正掌握這些概念的強(qiáng)大和簡單性。信不信由你,對(duì)象建模專家并不容易通過將它們與他們已經(jīng)知道的事物進(jìn)行比較來掌握這些概念中的每一個(gè)。

當(dāng)您第一次開始學(xué)習(xí)對(duì)象建模時(shí),也會(huì)發(fā)生類似的事情。三個(gè)相互關(guān)聯(lián)的概念是繼承、封裝和多態(tài)。如果不了解其他兩個(gè),這些都沒有多大意義。他們一起工作,創(chuàng)造了一個(gè)既強(qiáng)大又簡單的系統(tǒng)。

抵制將對(duì)象模型視為關(guān)系模型的誘惑,只是沒有一些特征。這是對(duì)對(duì)象模型的過度簡化。事實(shí)是,大約四十到五十年前,這些建模范例中的每一個(gè)都是建模藝術(shù)狀態(tài)的巨大進(jìn)步。它們中的每一個(gè)都使思考現(xiàn)有系統(tǒng)或提議的系統(tǒng)變得更加容易,但尚未構(gòu)建。

但它們彼此不同,兩者都不是從另一個(gè)衍生而來的。

如果你打算從關(guān)系思考開始,這里是開始的地方。確定 Product 和 ProductFamily 之間的關(guān)系是 HAS-A 關(guān)系還是 IS-A 關(guān)系。HAS-A 關(guān)系很容易使用單獨(dú)的表和外鍵建模(關(guān)系上)。就對(duì)象而言,最好將它們建模為單獨(dú)的類,并相互引用。IS-A 關(guān)系是不同的。例如,寵物店可能有貓、狗、鳥和蛇,但它們都是寵物。有些屬性或方法只適用于鳥類或貓,但也有一些屬性或方法適用于所有這些。

關(guān)系建模中與超類/子類最接近的類似物不在關(guān)系模型中,而是在擴(kuò)展實(shí)體關(guān)系模型中。在這里,有一個(gè)概念叫做泛化/專業(yè)化。貓、狗、鳥或蛇是泛化寵物的特化。這是一種 IS-A 關(guān)系。如果泛化/專業(yè)化在手頭的情況下對(duì)您有意義,那么子類和繼承將為您提供很好的服務(wù)。如果沒有,那么你最好不要在這里嘗試使用子類。

習(xí)慣于對(duì)象建模并想知道如何完成與 SQL 表的 IS-A 關(guān)系的人在 StackOverflow 中提出了數(shù)百個(gè)問題。最新示例就在您的問題旁邊,稱為Schedule Join Multiple Tables。對(duì)于那些人,有一個(gè)標(biāo)簽類表繼承. 他們很難理解的是,關(guān)系模型如何在沒有繼承概念的情況下做任何事情。你的問題正好相反。如何以及何時(shí)使用繼承使生活比關(guān)系模式中的生活更簡單。以及何時(shí)不使用繼承。

您需要確定 Product 和 ProductFamily 是否是繼承有用的情況。同樣,如果它是 HAS-A 關(guān)系,請(qǐng)忘記子類和繼承。如果是 IS-A 關(guān)系,那么繼承是簡單解決方案的關(guān)鍵。為了對(duì)超類進(jìn)行有意義的操作,您要么必須將自己限制在對(duì)超類有意義的操作上,要么必須學(xué)習(xí)如何構(gòu)建多態(tài)操作。這是很多學(xué)習(xí),但在路的盡頭有很多價(jià)值。


查看完整回答
反對(duì) 回復(fù) 2022-07-27
  • 4 回答
  • 0 關(guān)注
  • 200 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)