(二十)Dart 中的多態

Dart 中的多態教程

一、多態的概念

多態是面向對象編程中的一個重要概念。它允許將子類類型的指針賦值給父類類型的指針,同一個函數調用會有不同的執行效果。換句話說,子類的實例可以賦值給父類的引用。多態的核心在于父類定義一個方法不去實現,讓繼承它的子類去實現,每個子類有不同的表現。

二、代碼示例解析

(一)定義抽象類

abstract class Animal{eat();   //抽象方法 
}
  • 這里定義了一個抽象類 Animal,它有一個抽象方法 eat()。抽象類不能被實例化,它的作用是為子類提供一個統一的接口規范。子類繼承抽象類后,必須實現抽象類中的抽象方法。

(二)定義子類

class Dog extends Animal{eat() {print('小狗在吃骨頭');}run(){print('run');}
}
class Cat extends Animal{eat() {   print('小貓在吃老鼠');}run(){print('run');}
}
  • DogCat 都是繼承自 Animal 類的子類。
  • Dog 類中,重寫了 eat() 方法,使其輸出“小狗在吃骨頭”,并且添加了一個 run() 方法。
  • Cat 類中,重寫了 eat() 方法,使其輸出“小貓在吃老鼠”,同樣添加了一個 run() 方法。

(三)多態的體現

main(){// Dog d=new Dog();// d.eat();// d.run();// Cat c=new Cat();// c.eat();Animal d=new Dog();d.eat();Animal c=new Cat();c.eat();}
  • main() 函數中,我們沒有直接實例化 DogCat 類,而是通過將它們賦值給父類 Animal 類型的變量來體現多態。
  • Animal d=new Dog(); 這行代碼中,雖然變量 d 的類型是 Animal,但它實際上指向的是一個 Dog 類型的對象。當我們調用 d.eat(); 時,輸出的是“小狗在吃骨頭”,這是 Dog 類中重寫的 eat() 方法的實現。
  • 同樣,Animal c=new Cat(); 這行代碼中,變量 c 的類型是 Animal,但它指向的是一個 Cat 類型的對象。調用 c.eat(); 時,輸出的是“小貓在吃老鼠”,這是 Cat 類中重寫的 eat() 方法的實現。

三、總結

通過這個例子,我們可以看到多態的強大之處。它允許我們使用父類類型的變量來引用子類類型的對象,并且能夠根據實際引用的對象類型調用相應的方法。這種特性使得代碼更加靈活和可擴展,可以方便地添加新的子類而不需要修改現有的代碼邏輯。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/899464.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899464.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899464.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C++初階】第12課—list

文章目錄 1. list的構造2. list迭代器的常見接口2.1 list遍歷的迭代器接口2.2 list修改數據的迭代器接口2.3 list排序、逆序、合并相關操作的成員函數 3. 模擬實現list3.1 模擬實現list的構造3.2 模擬實現list的尾插3.3 模擬實現迭代器iterator3.4 模擬實現list的插入刪除3.5 模…

思維鏈技術(Chain-of-Thought, CoT)

思維鏈(Chain-of-Thought, CoT)是一種通過模擬人類逐步推理過程來提升大型語言模型(LLM)復雜任務表現的技術。其核心思想是讓模型在生成最終答案前,先輸出中間推理步驟,從而增強邏輯性和可解釋性。 1. 基礎…

谷粒微服務高級篇學習筆記整理---異步線程池

多線程回顧 多線程實現的4種方式 1. 繼承 Thread 類 通過繼承 Thread 類并重寫 run() 方法實現多線程。 public class MyThread extends Thread {Overridepublic void run() {System.out.println("線程運行: " Thread.currentThread().getName());} }// 使用 pub…

Windows學習筆記(4)關于MITRE

基本術語 APT(威脅組,高級持續威脅) TTP(攻擊目的技術過程,戰術技術和程序) ATT&CK框架 網站 https://attack.mitre.org/ CAR知識庫 MITRE Engage MITRE D3FEND 網址 https://d3fend.mitre.org/

Go 語言規范學習(2)

文章目錄 VariablesTypesBoolean typesNumeric typesString typesArray typesSlice typesStruct typesPointer typesFunction typesInterface typesBasic interfacesEmbedded interfacesGeneral interfaces【泛型接口】Implementing an interface【實現一個接口】 Map typesCha…

創意 Python 愛心代碼分享

創意 Python 愛心代碼分享 在編程中,用代碼表達創意和情感是一種非常有趣的方式。本文將分享幾段用 Python 編寫的愛心代碼,涵蓋簡單到復雜的實現方式,適合初學者和進階開發者。 1. 簡單愛心圖案 代碼實現 print("\n".join([&qu…

NLP高頻面試題(二十四)——RAG相關內容簡介

檢索增強生成(Retrieval-Augmented Generation,簡稱 RAG)是一種將信息檢索與生成模型相結合的技術,旨在提升大型語言模型的響應準確性、相關性和時效性。通過在生成過程中引入外部知識,RAG 能夠有效彌補 LLM 在知識局限…

Share01-WinCC文件越用越大?

為什么你們的經典WinCC項目在客戶電腦上運行的越來越慢?為什么查詢一個歷史曲線慢的要死?為什么重啟一下電腦畫面都要懷疑人生?具體原因可能多種多樣,但是極大可能是您的數據管理設置欠佳,那么閑話少敘,和小…

練習題:111

目錄 Python題目 題目 題目分析 需求理解 關鍵知識點 實現思路分析 代碼實現 代碼解釋 指定文件路徑和名稱: 定義要寫入的內容: 打開文件并寫入內容: 異常處理: 輸出提示信息: 運行思路 結束語 Python題…

2025_0327_生活記錄

昨晚正在玩手機,凌晨一點二十一分左右手機突然響起來,通知地震波將在5秒后到達海淀區。看著倒計時的數字不斷減小,橙色預警頁面不斷閃動,床猛地搖了幾下。那一刻,我的記憶被拉回了2008年。 上大學之前我在成都生活了1…

基于改進粒子群算法的多目標分布式電源選址定容規劃(附帶Matlab代碼)

通過分析分布式電源對配電網的影響,以有功功率損耗、電壓質量及分布式電源總容量為優化目標,基于模糊理論建立了分布式電源在配電網中選址定容的多目標優化模型,并提出了一種改進粒子群算法進行求解。在算例仿真中,基于IEEE-14標準…

雨云云應用測評!內測持續進行中!

大家好,時隔一個月,我們又見面了! 最近,雨云推出了新型云應用(RCA,Rainyun Cloud Application)。 通過云應用,你可以快速創建可以外部訪問的應用,采用全新的面板和dock…

【研究方向】聯邦|自然語言

聯邦學習 Federated Learning,FL 分布式學習方案。 通過多個參與方(client) 聯邦計算 Federated Computing 聯邦計算(Federated Learning)是一種分布式 機器學習 方法,旨在解決數據隱私保護與數據孤島問題。 圖聯邦 Graph Neural Networks,GNNs 圖聯…

【算法day25】 最長有效括號——給你一個只包含 ‘(‘ 和 ‘)‘ 的字符串,找出最長有效(格式正確且連續)括號子串的長度。

32. 最長有效括號 給你一個只包含 ‘(’ 和 ‘)’ 的字符串,找出最長有效(格式正確且連續)括號子串的長度。 https://leetcode.cn/problems/longest-valid-parentheses/ 2.方法二:棧 class Solution { public:int longestValid…

C++編程學習筆記:函數相關特性、引用與編譯流程

目錄 一、函數的缺省參數 (一)全缺省參數 (二)半缺省參數 二、函數重載 (一)參數類型不同 (二)參數個數不同 (三)參數類型順序不同 三、引用相關問題…

RPCGC閱讀

24年的MM 創新 現有點云壓縮工作主要集中在保真度優化上。 而在實際應用中,壓縮的目的是促進機器分析。例如,在自動駕駛中,有損壓縮會顯著丟失戶外場景的詳細信息。在三維重建中,壓縮過程也會導致場景數據中語義信息(Contour)的…

泛目錄優化:無極泛目錄優化網站,技術解析與風險控制指南

無極泛目錄優化網站精簡版 一、核心功能 無限層級目錄:支持動態創建 5 級以上子目錄,形成內容矩陣AI 內容生成:集成 GPT-4 接口,日均生產 10 萬 原創度 70% 以上的頁面SEO 智能檢測:自動優化 TDK、URL 結構、圖片屬…

歸檔重做日志archived log (明顯) 比redo log重做日志文件小

歸檔重做日志 (明顯) 比重做日志文件小。 (文檔 ID 1356604.1) 日志切換將由于以下原因發生: 1. 由于在重做日志文件已滿之前強制創建存檔而記錄和設計的行為 SQL> alter system switch logfile;SQL> alter system archive log current;RMAN> backup ar…

645.錯誤的集合

import java.util.HashMap; import java.util.Map;/*** program: Test* description: 645 錯誤的集合* author: gyf* create: 2025-03-23 10:22**/ public class Test {public static void main(String[] args) {}public static int[] findErrorNums(int[] nums) {int[] arr n…

力扣刷題494. 目標和

494. 目標和 - 力扣(LeetCode) 方法一,暴力dfs 直接進行深搜查找出所有的情況,缺點嚴重超時,只能過20個案例 留一下超時的 class Solution {//首先定義全局變量int[] abs { 1, -1 }; //用來記錄當前遍歷的數的正…