C# 文法練習(9): 類[一] – 訪問限制、方法、欄位、屬性

來源:互聯網
上載者:User
所有類預設繼承於 System.Object(或叫 Object):
using System;class MyClass1{}class MyClass2 : Object{}class MyClass3 : System.Object{}class Program{    static void Main()    {        MyClass1 obj1 = new MyClass1();        MyClass2 obj2 = new MyClass2();        MyClass3 obj3 = new MyClass3();        Console.WriteLine(obj1.ToString()); //MyClass1        Console.WriteLine(obj2.ToString()); //MyClass2        Console.WriteLine(obj3.ToString()); //MyClass3        Console.ReadKey();    }}

類的訪問限制和抽象類別、密封類:

using System;/* internal: 只用於當前項目的類, 這是預設的可以省略 *//* public  : 公開使用的類 */class MyClass1          { }internal class MyClass2 { }public class MyClass3   { }/* abstract: 只能繼承、不能直接執行個體化的類  */abstract class MyClass4          { }internal abstract class MyClass5 { }public abstract class MyClass6   { }// sealed: 不能繼承的類sealed class MyClass7          { }internal sealed class MyClass8 { }public sealed class MyClass9   { }class Program{    static void Main()    {        MyClass1 obj1 = new MyClass1();        MyClass2 obj2 = new MyClass2();        MyClass3 obj3 = new MyClass3();        /* MyClass4、MyClass5、MyClass6 是抽象類別, 不能執行個體化  */        MyClass7 obj7 = new MyClass7();        MyClass8 obj8 = new MyClass8();        MyClass9 obj9 = new MyClass9();        Console.WriteLine(obj1.ToString()); //MyClass1        Console.WriteLine(obj2.ToString()); //MyClass2        Console.WriteLine(obj3.ToString()); //MyClass3        Console.WriteLine(obj7.ToString()); //MyClass7        Console.WriteLine(obj8.ToString()); //MyClass8        Console.WriteLine(obj9.ToString()); //MyClass9        Console.ReadKey();    }}

方法的訪問限制:

using System;class MyClass{    /* private: 類自身使用的私人方法, 這是預設的 */    string Method1()           { return "Method1"; }    private string Method2()   { return "Method2"; }    /* protected: 子類可以繼承的方法 */    protected string Method3() { return "Method3"; }    /* internal: 當前項目可以使用的方法 */    internal string Method4()  { return "Method4"; }    /* public: 公開的方法 */    public string Method5()    { return "Method5"; }}class Program{    static void Main()    {        MyClass obj = new MyClass();        /* 由於存取層級的限制, MyClass 的 Method1、Method2、Method3 都不能訪問 */        Console.WriteLine(obj.Method4()); //Method4        Console.WriteLine(obj.Method5()); //Method5        Console.ReadKey();    }}

靜態方法:

using System;class MyClass{    /* 靜態方法 */    public static string Fun1()   { return "Fun1"; }    internal static string Fun2() { return "Fun2"; }    /* 一般方法 */    public string Fun3()          { return "Fun3"; }    internal string Fun4()        { return "Fun4"; }}class Program{    static void Main()    {        /* 靜態方法通過類名調用: */        Console.WriteLine(MyClass.Fun1()); //Fun1        Console.WriteLine(MyClass.Fun2()); //Fun2        /* 非靜態方法通過對象調用: */        MyClass obj = new MyClass();        Console.WriteLine(obj.Fun3());     //Fun3        Console.WriteLine(obj.Fun4());     //Fun4        Console.ReadKey();    }}

欄位:

using System;class MyClass{    public int F1; /* 欄位也有 public、internal、protected、private 的區別, 預設是 private */    public static int F2;       /* 靜態欄位, 可通過類名讀寫 */    public const int F3 = 2008; /* 常量欄位, 可通過類名讀, 唯讀 */    public readonly int F4;     /* 唯讀欄位, 通過對象讀; 只能在聲明時和建構函式中賦值 */        public MyClass()    {        F4 = 2010;    }}class Program{    static void Main()    {        /* 通過類名可以訪問 F2、F3; 但 F3 是唯讀 */        Console.WriteLine(MyClass.F2); //0        Console.WriteLine(MyClass.F3); //2008        MyClass.F2 = 2009;        Console.WriteLine(MyClass.F2); //2009        /* 通過對象可以訪問 F1、F4; 但 F4 是唯讀 */        MyClass obj = new MyClass();        Console.WriteLine(obj.F1);     //0        Console.WriteLine(obj.F4);     //2010        obj.F1 = 2009;        Console.WriteLine(obj.F1);     //2009        Console.ReadKey();    }}

屬性:

using System;class MyClass{    private int MyInt;    public int MyProperty     {         get { return MyInt; }        set { if (value >= 0) MyInt = value; else MyInt = 100; }    }}class Program{    static void Main()    {        MyClass obj = new MyClass();        obj.MyProperty = 2009;        Console.WriteLine(obj.MyProperty); //2009        obj.MyProperty = -1;        Console.WriteLine(obj.MyProperty); //100        Console.ReadKey();    }}

唯讀屬性:

using System;class MyClass{    private int MyInt = 100;    public int MyProperty     {         get { return MyInt; }    }}class Program{    static void Main()    {        MyClass obj = new MyClass();        Console.WriteLine(obj.MyProperty); //100        Console.ReadKey();    }}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.