深入類的方法

来源:https://www.cnblogs.com/lsy131479/archive/2018/01/06/8215268.html
-Advertisement-
Play Games

一.C#關鍵字擴充解釋: 1. new : 1)開闢空間 2)調用構造 3)實例化對象 2. this: 當前類的實例,用來區分入參和成員變數 3. void void修飾的方法表示返回值類型為空,並不代表沒有返回值 二.構造方法: 1.構造函數 特點: 方法名與類名相同 沒有返回值類型 主要完成對 ...


一.C#關鍵字擴充解釋:

  1. new :

    1)開闢空間

    2)調用構造

    3)實例化對象

  2. this:

    當前類的實例,用來區分入參和成員變數

  3.  void  

    void修飾的方法表示返回值類型為空,並不代表沒有返回值

二.構造方法:

  1.構造函數

    特點:

      方法名與類名相同

      沒有返回值類型

      主要完成對象的初始化工作

    註:不能將構造函數定義為void

      根據普遍的經驗,我們在進行開發時,一般不在構造函數中進行類的初始化以外的事情,不要嘗試顯示地調用構造函數

  2.無參構造

    語法:   

訪問修飾符 類名()
{
          //方法體          
}        

    代碼示例:

  

 public Book() { }

  3.帶參構造函數

    語法:

    

訪問修飾符 類名(參數列表)
{
          //方法體          
} 

      參數列表一般用來給類的屬性賦值

    優點:

      靈活性更好

      通過參數來動態控制對象的特征

    示例代碼:

public Book(int price, string author, string name)
        {
            //當前類的實例 ,用來 區分入參  和成員變數。
            this.price = price;
            this.author = author;
            this.name = name;
            
        }

  4.隱私構造函數

    在沒有手動編寫構造時,系統會給我們自動生成一個無參構造

    為什麼系統要自動生成無參構造?

            是為了給將來給高級框架,高級框架在底層可以通過無參構造給我們的類創建對象。

三.方法重載

  1.構造函數重載

  

 public class Player
    {
        //構造函數也可以構成重載
        public Player() 
        {

        }

        public Player(int age) 
        {

        }
}

  2.方法重載

    特點:

      方法名相同

      方法參數類型不同或者參數個數不同

      在同一個類中

    需要註意,方法名及參數列表相同的方法,僅是返回值類型不同,不能稱為方法重載

    

 public void Say() { }

        public string Say(int age)
        { 
            return "1"; 
        }






 public void Eat(int age,string name) 
        {

        }

        public void Eat(string name, int age)
        {

        }

  4.模仿Console系統類的WriteLine方法的可變參數數量傳入

    

 public class MagicClass
    {
       //param 參數  params 參數集合   可變參數 
       public void Say(params object[] arg) 
       {

       }
    }

    :方法重載不僅能避免命名的麻煩,還能使調用者不必判斷方法名就可直接調用

四.對象間的交互

  1.概述:

    在面向對象的世界里,一切皆為對象

    對象與對象相互獨立,互不幹涉,但在一定的外力的作用下,對象開始共同工作

  

    每個類都有自己的特性和功能,我們把它們封裝為屬性和方法

    對象之間通過屬性和方法進行交互

    可以認為方法的參數及方法的返回值都是對象相互傳遞的消息

  2.實例

    

    //遙控器
    public class Contol
    {
       
        public void Open(Tv tv)
        {
            tv.Open();
        }
        public void Close(Tv tv) 
        {
            tv.Close();
        }
        public void ChangeChannel(Tv tv,string channelName)
        {
            tv.ChangeChannel(channelName);
        }
    }




    /// <summary>
    /// 電視機
    /// </summary>
    public class Tv
    {
        //維護一個狀態
        bool state = false;//關閉
        public void Open() 
        {
            if (state==false)//關閉的
            {
                state = true;//狀態切換到開 機狀態
                Console.WriteLine("電視機打開啦!!!!!~~~~~");
            }   
        }
        public void Close()
        {
            if (state == true)//開著的
            {
                state = false;//狀態切換到關 機狀態
                Console.WriteLine("電視機關閉啦!!!!!~~~~~");
            }
        }

        public void ChangeChannel(string channelName)
        {
            if (state==true)
            {
                Console.WriteLine("您已經成功切換到"+channelName);
            }
        }

    }




        static void Main(string[] args)
        {
            //01.買一個電視機
            Tv tv = new Tv();


            //02.買一個遙控器
            Contol control = new Contol();

            //03.進行操作
            control.Open(tv);
            control.ChangeChannel(tv, "鳳凰衛視");
            control.Close(tv);


        }

   經驗:

     一旦程式報錯"未將對象引用設置到對象的實例",我們就可以認定某個對象沒有實例化。此時可以通過錯誤代碼找到是哪個對象沒有實例化,進行相應修改即可

 

    


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

-Advertisement-
Play Games
更多相關文章
  • 凱魯嘎吉 - 博客園 http://www.cnblogs.com/kailugaji/ 某糖果廠用原料A、B和C按不向比率混合加工而成甲、乙、丙三種糖果(假設混合加工中不損耗原料)。原料A、B、C在糖果甲、乙、丙中的含量、原料成本、加工成本、原料限量及糖果售價如表所示。 問該廠對這三種糖果各生產多 ...
  • 利用Java 8中新引入的LocalDate類來計算時間間隔,本文將用一段極其簡單的代碼來示範如何計算兩個日期之間間隔的年數。 ...
  • 凱魯嘎吉 - 博客園 http://www.cnblogs.com/kailugaji/ 說明: Lingo版本: 某工廠明年根據合同,每個季度末向銷售公司提供產品,有關信息如下表。若當季生產的產品過多,季末有積餘,則一個季度每積壓一噸產品需支付存貯費O.2萬元。現該廠考慮明年的最佳生產方案,使該廠 ...
  • 微信跳一跳輔助工具 準備工具 adb驅動 安卓手機 打開手機的調試模式 usb接好手機和電腦 PyCharm:全宇宙唯一一款專門用於Python開發IDE工具 實現原理: 獲取手機的實時的截圖 點擊起始位置和落地位置 技算兩個點的距離 計算按壓時間 發送按壓指令 重新刷新手機截圖 ...
  • 一:裝飾器 1 函數對象有一個__name__屬性,可以拿到函數的名字 上面的log,因為它是一個decorator,所以接受一個函數作為參數,並返回一個函數。我們要藉助Python的@語法,把decorator置於函數的定義處: 調用now()函數,不僅會運行now()函數本身,還會在運行now( ...
  • 一. 虛擬環境搭建 在開發中安裝模塊的方法: pip install 模塊名稱 之前我們安裝模塊都是直接在物理環境下安裝,這種安裝方法,後面一次安裝的會覆蓋掉前面一次安裝的。那如果一臺機器上面開發多個項目使用到不同版本的模塊呢?怎麼樣做才能不受版本影響!那麼需要用到虛擬環境,每個虛擬環境互相隔離,在 ...
  • 1、概念 1.0 線程的和進程的關係以及優缺點 windows系統是一個多線程的操作系統。一個程式至少有一個進程,一個進程至少有一個線程。進程是線程的容器,一個C#客戶端程式開始於一個單獨的線程,CLR(公共語言運行庫)為該進程創建了一個線程,該線程稱為主線程。例如當我們創建一個C#控制台程式,程式 ...
  • 相對之前發的日誌記錄來說,此類將程式記錄處理與寫磁碟操作分離,用戶代碼部分,將日誌放到隊列,並通知線程將日誌寫到文件: 1.公共類: using System;using System.IO;using System.Collections.Generic;using static System.C ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...