写好类后,需要创建对象,给类创建对象,称为类的初始化; 给对象(属性)赋值,称为对象的初始化。
类由字段(Field)、属性(Properity)、方法(Method)组成
属性的本质是两个方法:set() 和get()
属性的作用就是保护字段,对字段的赋值和取值进行判定。
可读可写属性指的是两种方法(get() and set())都包括;
只有get() 称之为可读属性;只有set()称之为可写属性。
字段私有,赋值是给属性赋值
set给属性赋值(value--->属性),get赋值给字段(属性值--->字段)。
整个过程属性没有赋值,起到了中间的作用(相当于访问不到字段,将字段保护起来)。
属性由两个方法组成:set () and get()
private string _name;
public string Name
{
get { return _name;} // 当输出属性的值时,会执行get;返回字段的值,可以进行判断字段;
set { _name=value;} // 当给属性赋值时,会执行set;属性的值----->赋值给字段,可以进行判断value;
}
其中:
st.Name="hello" ; // 初始化时,执行的是set方法,这里相当于value为"hello"
Console.WriteLine(" {0}", this.Name); // 这时候执行的是get方法,通过调用Name属性,调用字段_name;
Console.WriteLine("{0}",this._name); // 这时候执行的是set方法,没有执行get方法,直接通过将属性的值赋值给字段,调用字段。若get中进行了限定,则不会发生改变。
举例
namespace demo1
{
class Program
{
static void Main(string[] args)
{
Object_Person person1=new Object_Person() ;
person1.Name = "Sasu"; // 给属性赋值相当于给字段赋值,属性不赋值,只起到了中间的作用。
person1.Home="China";
person1.Gender='男';
person1.Age =12;
person1.ShowDetail();
Console.ReadLine();
}
}
}
namespace demo1
{
class Object_Person
{
private string _name; //这里的访问修饰符private,可以不加,若不加的话,默认也为private。只要当前类可以访问。字段不可以直接访问,利用访问属性来处理。
public string Name // 所以,每个字段都应该有属性
{
get { return _name;}
set{ // 在set中进行限定,在赋值时进行判断。
if (value == "")
_name = "空";
else
_name=value;
}
}
int _age;
public int Age
{
set {_age=value;}
get {
if (_age < 0 || _age > 100) // 在get中进行限定,在输出时进行判断
_age = 0;
return _age; }
}
private string _home;
public string Home
{
get { return _home; }
set { _home = value; }
}
private char _gender;
public char Gender
{
set { _gender = value; }
get { return _gender; }
}
public void ShowDetail()
{
Console.WriteLine("The imformation is:Name is {0},Home is {1},Gender is{2},Age is {3}", //C#中随便换行输入
this.Name,this.Home,this.Gender,this.Age);// 这里的打印执行的是属性。
}
}
}