1. 程式人生 > >.net(C#)中的類和物件

.net(C#)中的類和物件

比較簡單,不過是很認真寫的,希望對看到的同學有所幫助!

首先說下類:

      類呢,就是一類事物的抽象,抽象的過程中把,這類事物共有的、一般性的特徵、行為啦,抽象成類中的屬性和方法。

舉個例子:

就說人吧,可以把人作為一個類,人這個類的特徵:兩條腿、兩個胳膊、兩個眼睛等這些都是一說到人,咱們都能想起的一般特徵,這些都是人這個類的屬性。

然後是行為,走路、吃飯、喝茶、打遊戲等等,這些都是人能夠進行的活動,這些都是人的行為,都可以作為人這個類中的方法。

再說說物件:

      首先,物件就是類的例項化,也就是說,物件就是類範圍內的具體的某一個。

比如說吧:

     還說人這個類吧,人這個類中的某一個具體的人就是這個類的一個物件。比如:你、我、小張、你女朋友,這些都是人這個類中的一個具體的人,這些都是人這個類例項化出的一個物件。例項化出的物件,有類中的所有基本屬性、也可進行類中的所有的行為。

建立類是應該注意的事項;

建立之前,先分析有到底有多少個物件,再通過物件分析去確定有多少個類,接下啦,去確定類的詳細內容:屬性、方法、行為等等......

當一個類建立好以後,會有一個預設的無引數的建構函式

建構函式可以過載,建構函式訪問修飾符,一般都是public

1.建構函式名必須與類名一致,可以有引數,也可以沒有引數,有引數的,例項化時,必須要有傳值

比如;

 無引數的:  public Student(){}    例項化: Student stu = Student();

 有引數的:

   public Student(string _name1, int _no1)

     {
           this.Name = _name1;
           this.No = _no1;  
     }

這是例項化物件是語法應該是這樣的

Student stu = Student("name",110);

2.建構函式下不能有任何返回值,哪怕void也不行

3.建構函式的訪問修飾符,一般都是public

   例如

     public Student(string _name1, int _no1)

     {
           this.Name = _name1;
           this.No = _no1;  
     }

這是例項化物件是語法應該是這樣的

Student stu = Student("name",110);

當然也可以是private|protected,不過或兩者不常用,如果建構函式訪問修飾符是private|protected;則例項化時就不能直接用建構函式例項化,這時候就需要,在類中建立一個方法來呼叫私有的或受保護的建構函式,向外返回一個例項化的物件

例如:

        private Student(string _name1, int _no1)
        {
            this.Name = _name1;
            this.No = _no1;
          
        }
        public static Student get_student(string _name,int _no)
        {           
            return new Student(_name,_no);
        }

這時想用原來的方法例項化物件,就會出錯,可以自己試試。

正確的例項化物件是語法應該是這樣的

Student stu = Student.get_student("name",110);

4.如果手動新增一個建構函式,這是會將預設的建構函式覆蓋

例:

    我建立一個Student的類

 class Student
    {
        public string _name;
        public int _no;

        private Student(string _name1, int _no1)
        {
            this.Name = _name1;
            this.No = _no1;

        }
        public static Student get_student(string _name,int _no)
        {           
            return new Student(_name,_no);
        }
        public string Name
        {
            get 
            {    return _name;     }
            set 
            {    _name = value;   }
        }
       public int No
        {
            get 
            {  if (_no < 0)

                {  _no = 2;  }
                 return _no;

            }         
            set
            {   if (value < 3)
                {    _no = value;   }
                else
                {   Console.WriteLine("輸入的值{0}過大", value);
                    _no = 3;   }
            }
        }
        public void SayHi()
        {
            Console.WriteLine("你好,我是{0}號\n我叫{1}", this.No, this.Name);
        }
    }

你應該發現啦,我的No,Name兩個屬性中的get(),set()地方法是不一樣,不急,這正是我想給你聊的

Get()方法,是取值的函式,通過這個函式,可以去類中相應欄位的值,就是說get()是對應欄位對外部的一個介面,可以把相應的欄位設定為private|protected,然後通過,它的get()方法訪問它,當然,因為get()是一個方法,它也就有一般方法的所有功能,可以執行各種操作,比如可以根據一定的條件對值進行判斷、重置,也可以根據返回的值的情況,判斷是否允許把這個值返回去,對之進行有選擇的攔截和更改。

Set()方法,是對物件中相應的屬性的賦值函式,通過這個函式,可以給物件中的屬性或欄位進行賦值,當然和上面講述的一樣,也可以對將要賦值的欄位的範圍進行限定,然後根據限定條件進行實際賦值。