程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#語法練習(9): 類[一] - 訪問限制、方法、字段、屬性

C#語法練習(9): 類[一] - 訪問限制、方法、字段、屬性

編輯:關於C#

所有類默認繼承於 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();
   }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved