class Person
{
private string name = "Jack"; //欄位
public string Name //屬性 only read
{
get
{
return name;
}
}
public int weight; //欄位
private int age; //欄位
public int Age //屬性
{
get
{
return age;
}
set
{
if (value > 0 && value < 150) //控制私人欄位的可訪問行
{
age = value;
}
else
{
age = 0;
}
}
}
public void Oneperson() //方法
{
Console.WriteLine("name :{0}", name);
Console.WriteLine("weight:{0}", weight);
Console.WriteLine("age: {0}", age);
}
public static void staticOneperson(out string name, out int weight, out int age) //靜態方法
{
name = "aa";
weight = 66;
age = 100;
}
}
Person onePerson = new Person();
onePerson.Age = -2; // invalid data
onePerson.weight = 100;
onePerson.Oneperson();
onePerson.Age = 21; //Age 通過共有Age訪問私人欄位age
onePerson.Oneperson(); //使用執行個體對象調用執行個體方法
Console .WriteLine("This is {0} info." ,onePerson.Name);
string na;
int we;
int ag;
Person.staticOneperson(out na, out we, out ag); //使用類名調用靜態方法
Console .WriteLine ("sname: {0},sweight: {1},sage: {2}", na, we, ag);
屬性的類型和欄位類型必須一致 Age age 都是string
屬性只有get時: 唯讀屬性;
只有set時: 唯寫屬性;
建議類內部的敏感欄位使用屬性來控制訪問: id ,age;
封裝欄位:(屬性和欄位綁到一起)
封裝是物件導向的三大特徵之一: 避免非法資料的訪問, 保證資料的完整性
使用static修飾的方法稱為靜態方法, 使用執行個體對象調用的方法交執行個體化方法
靜態方法 執行個體化方法
static 不要關鍵字static
使用類名調用 使用執行個體對象調用
可以訪問靜態成員 可以直接存取靜態成員
不可以直接存取執行個體成員 可以
不能直接調用執行個體方法 可以
調用前初始化 執行個體化對象時初始化
重載
為什麼要重載: 一個方法能實現不同類型的操作。
實現方法: 同名不同傳回型別,不同參數類型,不同參數的個數
注意: 不容許重載方法僅僅是傳回值不同
建構函式
類中一個特殊的方法 建構函式與類名相同, 不返回任何值,可初始化成員變數
public Person(string name, int age)
{
//this.Name = name; //name only read
this.Age = age;
}
Person Mark = new Person("Mark", 29); //new 關鍵字 執行個體化對象調用建構函式
Mark.Oneperson(); //name only read, name is Jack not Mark
建構函式重載 同樣同名 不同參