C# 面向物件程式設計(雜2),類中可能出現的成分,欄位,屬性,方法,自動屬性,許可權(五種),其他類,值傳遞和引用傳遞,類ToString的問題
阿新 • • 發佈:2021-02-04
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("我是人類");
}
}
}