日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c# 对象 类

發布時間:2023/12/2 C# 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c# 对象 类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
類定義中可以使用的訪問修飾符組合
  • none or internal 類只能在當前工程中訪問
  • public 類可以在任何地方訪問
  • abstract or internal abstract 類只能在當前工程中訪問,不能實例化,只能繼承
  • public abstract 類可以在任何地方訪問,不能實例化,只能繼承
  • sealed or internal sealed 類只能在當前工程中訪問,不能派生,只能實例化
  • public sealed 類可以在任何地方訪問,不能派生,只能實例化
構造函數 其名稱同類名,沒有返回值,也不需要void?,在new的時候調用。 所有的類都有構造函數,只不過C#會默認一個無參數的構造函數,如果不定義,則使用默認。 如果定義了構造函數,則默認失效。 嵌套類 C#允許使用類嵌套 嵌套類型被視為是外層類型的成員,因此嵌套類型可以訪問外層類型中的所有其他成員。 根據類的成員默認訪問修飾符為:private的原則,嵌套類默認訪問修飾符為private 嵌套類型可以自由訪問外層類型的成員,而不在乎那些成員是否私有。外層類型如果想訪問嵌套類型,則要受到訪問規則的限制。 關于嵌套類的繼承(后面會詳細說明繼承),如果一個類型繼承了一個包含嵌套類型的類型,那么它也會自然的繼承基類型中的嵌套類型,因為那個嵌套類型本身就是基類型的一個成員。因此只要那個嵌套類型不是private或者天生不能被繼承的,子類型中新聲明的嵌套類型還可以繼承那個嵌套類型。 析構函數
  • 不能在結構中定義析構函數。?只能對類使用析構函數。
  • 一個類只能有一個析構函數。
  • 無法繼承或重載析構函數。
  • 無法調用析構函數。?它們是被自動調用的。
  • 析構函數既沒有修飾符,也沒有參數。
一. 析構函數的特征: 析構函數只能存在于類中,而不能存在于結構中;析構函數不能有任何修飾符,包括訪問控制修飾符,靜態修飾符,抽象修飾符,虛擬修飾符等都不能有;析構函數沒有參數,這就意味著不能有任何重載。 二. 析構函數的調用時機: 析構函數會在對象被垃圾收集器回收時調用,但垃圾收集器有個特點,它是懶惰的, 它并不會在變量出了作用域和生命期后立即回收,而是在它認為適當的時候才回收,一般是內存緊張的時候。 例子: class Car { ~Car() // destructor { // cleanup statements... } } 對象的消亡 對象超出作用范圍 消亡 對象 引用手動賦值 null 消亡 類的繼承 繼承是面向對象編程的一個重要特性。任何類都可以從另一個類中繼承,這就是說,這個類擁有它繼承的類的所有成員。在OOP 中,被繼承的類稱為父類(也稱為基類)。注意,C#中的對象僅能直接派生于一個基類,當然基類也可以有自己的基類。 類的繼承一個重要作用是子類可重用父類的代碼。這樣就可以在一個地方集中維護一份代碼,避免了很多的重復的代碼。 c#只支持單繼承 繼承語法 : class ModelACar : Car 重構 比如現在我有兩個類,一個是Cat,另一個是Dog,他們都有叫方法,如果我每個類都去寫實現叫方法,就造成了代碼的重復,怎么辦那,可以把叫方法抽象出來,放到一個父類Animal中,讓子類Cat、Dog去繼承 【重寫】 多出現在多態里,父類里寫一個virtual方法或abstract方法,子類通過override重寫去實現父類的方法
  • 1.重寫父類的方法要用到override關鍵字(具有override關鍵字修飾的方法是對父類中同名方法的新實現)
  • ?????2.要重寫父類的方法,前提是父類中該要被重寫的方法必須聲明為virtual或者是abstract類型。給父類中要被重寫的方法添加virtual關鍵字表示可以在子類中重寫它的實現。(注意:C#中的方法默認并不是?virtual類型的,因此要添加virtual關鍵字才能夠被重寫)
  • 3.virtual關鍵字用于將方法定義為支持多態,有virtual關鍵字修飾的方法稱為“虛擬方法”
class Animal { public virtual void GetShoutSound() { } } class Cat:Animal { public override void GetShoutSound() { Console.WriteLine("貓的叫聲為:喵"); } } class Dog : Animal { public override void GetShoutSound() { Console.WriteLine("狗的叫聲為:"); } }

  

轉載于:https://www.cnblogs.com/gwyy/p/8028879.html

總結

以上是生活随笔為你收集整理的c# 对象 类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。