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