在C#中實現OOP概念


1.C#中的對象和類

  類是對一組具有相同屬性和行為的對象的描述

  編碼慣例:

    給公共成員變量、受保護的成員變量或內部成員變量命名應使用帕斯卡命名法,如Score、Name和Staus

    給私有成員變量命名應使用駱駝命名法,並以下划線開頭,如_age、_length 和_radius

class Employee
{
  private string _name;
  private char _gender;
  private string _qualification;
  private uint _salary;
}

2.訪問修飾符

   public 可被所屬類的成員以及不屬於類的成員訪問

   internal 可被當前程序集訪問

   protected 可被所屬類或派生自所屬類的類型訪問

   private 僅所屬類的成員才可以訪問

   如果對類不指定訪問修飾符,則類的默認訪問修飾符為internal ,但類成員的默認訪問修飾符為private

3.構造函數和析構函數

  C#提供了一個名為構造函數的結構來自動初始化成員變量,但構造函數是類中的一種特殊方法,每次創建類的實例都會調用此方法。構造函數與類同名,它不返回任何值。

using System;

namespace BaseConsole
{
    class Employee
    {
        private string _name;
        private char _gender;
        private string _qualification;
        private uint _salary=0;
        //默認構造函數
        private Employee()
        {
            _qualification = "大學畢業生";
        }
        //參數化構造函數
        private Employee(string strQualification,string strName,char gender,uint empSalary)
        {
            _qualification = strQualification;
            _name = strName;
            _gender = gender;
            _salary = empSalary;
        }
        [STAThread]
        static void Main(string[] args)
        {
            Employee objEmployee = new Employee();
            //調用參數化構造函數
            Employee objMBA = new Employee("工商管理學碩士","tom",'M',4000);
            Console.WriteLine("資格="+objEmployee._qualification);
            Console.WriteLine("薪水="+objEmployee._salary);
            Console.WriteLine("資格="+objMBA._qualification);
            Console.ReadKey();
        }
    }
}

析構函數

~ Employee()
{
  //實現析構函數
}

 析構函數不接受任何參數,也不帶任何訪問修飾符。析構函數的主體包括了一些代碼,通常用於關閉由實例打開的數據庫、文件或網絡連接等
  一個類只能有一個析構函數

  析構函數不能重載

  析構函數不能顯式或手動調用,只能由垃圾回收器自動調用

4.方法重載

  多個方法共用一個名稱但對不同數據執行相似的功能,這種概念稱為方法重載

using System;

namespace BaseConsole
{
    class OverloadParameters
    {
        int greatest(int num1,int num2)
        {
            Console.WriteLine("{0}和{1}中較大的數字是:",num1,num2);
            if(num1>num2)
            {
                return num1;
            }else
            {
                return num2;
            }
        }
        int greatest(int num1,int num2,int num3)
        {
            Console.WriteLine("{0}、{1}和{2}中最大的數字是:",num1,num2,num3);
            if (num1 > num2 && num1 > num3)
            {
                return num1;
            }
            else if (num2 > num1 && num2 > num3)
            {
                return num2;
            }
            else
            {
                return num3;
            }
            
        }
        [STAThread]
        static void Main(string[] args)
        {
            OverloadParameters obj = new OverloadParameters();
            Console.WriteLine(obj.greatest(22,88));
            Console.WriteLine(obj.greatest(300,200,100));
            Console.ReadKey();
        }
    }
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM