里式轉換

来源:http://www.cnblogs.com/enduo/archive/2017/11/04/7783991.html
-Advertisement-
Play Games

里氏轉換: Person p=new Student(); 如果說子類可以賦值給父類 那我們應該聲明一個父類類型去指向子類對象 如果說父類中裝的是子類對象 可以考慮將父類強轉為子類對象用 is 轉換成功返回 true as 轉換成功返回對應的對象 來接收ss students ss =p as st ...


里氏轉換:

  1.    子類可以賦值給父類 (如果有一個方法需要一個父類作為參數,我們可以 傳一個 子類對象)
  2.     如果父類中裝的是子類可以強轉為子類對象
  3.    子類對象可以調用父類成員,但是父類對象永遠只能只能調用父類自己的成員

                Person p=new Student();
                如果說子類可以賦值給父類 那我們應該聲明一個父類類型去指向子類對象
                如果說父類中裝的是子類對象 可以考慮將父類強轉為子類對象用
                is  轉換成功返回 true
               as  轉換成功返回對應的對象 來接收ss
               students ss =p as students;聲明一個students類型的對象
        is的用法:
          if(p is students)
          {
            ((students)p).studentsSayHello();
          }
          else
          {
            cw("失敗");
          }
      

 1 namespace _里氏轉換
 2 {
 3     class Program
 4     {
 5         static void Main(string[] args)
 6         {
 7             ////           1、里氏轉換
 8             ////1)、子類可以賦值給父類:如果有一個地方需要一個父類作為參數,我們可以給一個子類代替
 9             //  Student s = new Student();
10             Person p = new Student();//s;
11 
12             //string str = string.Join("|",new string[] { "1", "2", "3", "4" });
13             //Console.WriteLine(str);
14             //Console.ReadKey();
15 
16             ////2)、如果父類中裝的是子類對象,那麼可以講這個父類強轉為子類對象。
17 
18             //is的用法
19             //if (p is Student)
20             //{
21             //    Student ss = (Student)p;
22             //    ss.StudentSayHello();
23             //}
24             //else
25             //{
26             //    Console.WriteLine("轉換失敗");
27             //}
28             //as的用法
29             Student t = p as Student;
30             t.StudentSayHello();
31             Console.ReadKey();
32         }
33     }
34 
35     public class Person
36     {
37         public void PersonSayHello()
38         {
39             Console.WriteLine("我是父類");
40         }
41     }
42     public class Student : Person
43     {
44         public void StudentSayHello()
45         {
46             Console.WriteLine("我是學生");
47         }
48     }
49     public class Teacher : Person
50     {
51         public void TeacherSayHello()
52         {
53             Console.WriteLine("我是老師");
54         }
55     }
56 
57 
58 }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;u ...
  • Linux BSP 開發的基礎就是和GPIO打交道, 下麵總結下這幾天對某家開發板的GPIO控制的知識。 公司的開發板用的是 DTB 模式 ,首先,進入 dts,dtsi文件查看關於GPIO 的模塊。 可以看到 GPIO 節點 掛在 SOC node 下 ,手上這塊開發板 把GPIO分成了8個 ba ...
  • logstash中配置的GeoIP的資料庫解析ip了,這裡是用了開源的ip數據源,用來分析客戶端的ip歸屬地。官網在這裡:MAXMIND 下載GeoLiteCity資料庫 修改配置文件(自己定義的config/logstash.conf) 在 filter中添加 在kibana中展示的效果 ...
  • 第1章 Nginx 1.1 nginx的概念 Nginx("engine x")是一個開源的、支持高性能、高併發的WWW服務和代理服務軟體,具有高開發(特別是靜態資源),占用系統資源少等特性。 Nginx可以運行在Unix、Linux、BSD、Mac OSX、Solaris,以及Microsoft ...
  • 1》判斷輸入為數字,字元或其他 腳本代碼: 檢測結果: 2》求平均數: 測試效果: 3》自減輸出: 腳本代碼: 測試效果: 4》在文件中添加首碼: 腳本代碼: 效果顯示: 5》批量測試文件是否存在: 腳本代碼: 測試結果; 6》用指定大小文件填充硬碟 用指定大小文件格式化後掛載: 腳本代碼: 效果顯 ...
  • 上一節 我們學習了: 網卡驅動介紹以及製作虛擬網卡驅動: http://www.cnblogs.com/lifexy/p/7763352.html 接下來本節,學習網卡晶元DM9000C,如何編寫移植DM9000C網卡驅動程式。 1.首先來看DM9000C原理圖 如下圖所示: (#:表示低電平有效) ...
  • MicroService.Core MicroService.Core 的初衷是為了方便的創建一個微服務, 可作為 Windows Service 或者控制台模式啟動。 它底層使用了 OWin 自托管技術,拋棄了微軟 Mvc 的那套東 西,進而選擇了 Nancy,使得開發過程很順心,很簡單! 快速入 ...
  • 2.1 自定義類庫 自定義類庫能封裝核心代碼,保證核心的代碼在交付給客戶時,不讓客戶泄露,同時也防止非專業人士的私自更改。另外能提高程式代碼的復用率,使得代碼量減少,程式結構簡潔。自定義類庫就是程式中常見的.dll文件。 新建一個people的自定義類庫,其實吧,就和java中的導包一樣的。 類庫和 ...
一周排行
    -Advertisement-
    Play Games
  • 一個自定義WPF窗體的解決方案,借鑒了呂毅老師的WPF製作高性能的透明背景的異形視窗一文,併在此基礎上增加了滑鼠穿透的功能。可以使得透明窗體的滑鼠事件穿透到下層,在下層窗體中響應。 ...
  • 在C#中使用RabbitMQ做個簡單的發送郵件小項目 前言 好久沒有做項目了,這次做一個發送郵件的小項目。發郵件是一個比較耗時的操作,之前在我的個人博客裡面回覆評論和友鏈申請是會通過發送郵件來通知對方的,不過當時只是簡單的進行了非同步操作。 那麼這次來使用RabbitMQ去統一發送郵件,我的想法是通過 ...
  • 當你使用Edge等瀏覽器或系統軟體播放媒體時,Windows控制中心就會出現相應的媒體信息以及控制播放的功能,如圖。 SMTC (SystemMediaTransportControls) 是一個Windows App SDK (舊為UWP) 中提供的一個API,用於與系統媒體交互。接入SMTC的好 ...
  • 最近在微軟商店,官方上架了新款Win11風格的WPF版UI框架【WPF Gallery Preview 1.0.0.0】,這款應用引入了前沿的Fluent Design UI設計,為用戶帶來全新的視覺體驗。 ...
  • 1.簡單使用實例 1.1 添加log4net.dll的引用。 在NuGet程式包中搜索log4net並添加,此次我所用版本為2.0.17。如下圖: 1.2 添加配置文件 右鍵項目,添加新建項,搜索選擇應用程式配置文件,命名為log4net.config,步驟如下圖: 1.2.1 log4net.co ...
  • 之前也分享過 Swashbuckle.AspNetCore 的使用,不過版本比較老了,本次演示用的示例版本為 .net core 8.0,從安裝使用開始,到根據命名空間分組顯示,十分的有用 ...
  • 在 Visual Studio 中,至少可以創建三種不同類型的類庫: 類庫(.NET Framework) 類庫(.NET 標準) 類庫 (.NET Core) 雖然第一種是我們多年來一直在使用的,但一直感到困惑的一個主要問題是何時使用 .NET Standard 和 .NET Core 類庫類型。 ...
  • WPF的按鈕提供了Template模板,可以通過修改Template模板中的內容對按鈕的樣式進行自定義。結合資源字典,可以將自定義資源在xaml視窗、自定義控制項或者整個App當中調用 ...
  • 實現了一個支持長短按得按鈕組件,單擊可以觸發Click事件,長按可以觸發LongPressed事件,長按鬆開時觸發LongClick事件。還可以和自定義外觀相結合,實現自定義的按鈕外形。 ...
  • 一、WTM是什麼 WalkingTec.Mvvm框架(簡稱WTM)最早開發與2013年,基於Asp.net MVC3 和 最早的Entity Framework, 當初主要是為瞭解決公司內部開發效率低,代碼風格不統一的問題。2017年9月,將代碼移植到了.Net Core上,併進行了深度優化和重構, ...