1. 程式人生 > 其它 >C# 面向物件程式設計(雜2),類中可能出現的成分,欄位,屬性,方法,自動屬性,許可權(五種),其他類,值傳遞和引用傳遞,類ToString的問題

C# 面向物件程式設計(雜2),類中可能出現的成分,欄位,屬性,方法,自動屬性,許可權(五種),其他類,值傳遞和引用傳遞,類ToString的問題

技術標籤:C#c#

C# 面向物件程式設計(雜2),類中可能出現的成分

1. 欄位,屬性,方法,自動屬性

class Person1
{
    //欄位
    private string _name;
    //欄位對應的屬性
    public string Name 
    {
        //當你輸出屬性的值得時候 會執行get方法
        get { return _name; }
        //當你給屬性賦值的時候 首先會執行set方法
        set { _name = value; }
    }
	// 方法
    public void Chlss
() { // this關鍵字,在類中可以不用寫,但推薦寫 Console.WriteLine("{0}是吃貨\t{1}",this.Name,this.Gender); } }
//自動屬性
public string Name
{
    get;
    set;
}
//相當於
private string _name
public string Name
{
    get {return _name;};
    set {_name = value;};
}

2.許可權(五種)

public:公開的公共的,在哪都能訪問。
private

:私有的,只能在當前類的內部進行訪問,出了這個類就訪問不到了。

protected
受保護的:可以在當前類的內部以及該類的子類中訪問。

internal:只能在當前專案中訪問。在同一個專案中,internal和public的許可權是一樣。
protected internal:protected+internal

1)、能夠修飾類的訪問修飾符只有兩個:public、internal。
2)、可訪問性不一致。
子類的訪問許可權不能高於父類的訪問許可權,會暴漏父類的成員。

3.其他類

partial部分類

namespace _06部分類
{
    class Program
    {
        static
void Main(string[] args) { } } //一個類可以分成多個地方來寫 public partial class Person { private string _name; public void Test() { } } public partial class Person { public void Test(string name) { // _name } } }

sealed密封類

不能夠被其他類繼承,但是可以繼承於其他類。

namespace _07密封類
{
    class Program
    {
        static void Main(string[] args)
        {

        }
    }
	//sealed
    public sealed class Person:Test
    { 
        
    }

    public class Test
    { 
        
    }
}

4 值傳遞和引用傳遞

值型別在複製的時候,傳遞的是這個值得本身。
引用型別在複製的時候,傳遞的是對這個物件的引用。

字串是特別的,雖然字串可以看成char型別陣列,但字串具有不變性

string s1 = "張三";
string s2 = s1;
string s2 = "歷史";
//經過這樣操作,字串s1還是"張三",因為字串重新賦不同的值,會重新開闢空間

ref關鍵字傳值是引用傳遞。

類ToString的問題

1.ToString是object的虛方法,可以重寫

2下面程式碼

//我們將一個物件輸出到控制檯  預設情況下 列印的就是這個物件所在的類的名稱空間
namespace _06ToString的問題
{
    class Program
    {
        static void Main(string[] args)
        {
            //我們將一個物件輸出到控制檯  預設情況下 列印的就是這個物件所在的類的名稱空間
            int[] nums = { 1, 2, 3, 4, 5 };
            Console.WriteLine(nums.ToString());
            Person p = new Person();
            Console.WriteLine(p.ToString());
            Console.ReadKey();
        }
    }
    public class Person
    {
        public void SayHello()
        {
            Console.WriteLine("我是人類");
        }
    }
}

image-20210203123818398