一 . 私有字段
不希望类中字段暴露给其他类 可以使用private描述字段 可以在构造函数重载中对其赋值
或者使用属性赋值
//在入口调用
MyClass myClass = new MyClass();
myClass.Test(10);
// 私有字段
//不希望类中字段暴漏给其他类 可以使用private 描述字段 可以在构造函数重载中对其 赋值
//或者使用属性赋值
private int _age;
//使用方法来限制和提供内部的私有字段的访问
public void Test(int a)
{ if (a > 10)
{
_age = 10;
}
else {
_age = a;
}
}
二.对象实例化
如何对象的实例化 使用new关键字 new 开辟内存空间为对应类的对象 (内存保存的时实例字段和实例方法和实例属性)
实例化一个对象语法是:
类名 对象名=new 类名()
属性 和 字段的关系
// 属性和字段的关系
//(1)字段是变量 属性是方法
//(2)字段是为类的内部方法,或者方法之间传递数据使用,强调对内使用
//属性是对外提供数据访问、本身不保存数据,强调对外使用
// (3)字段一般用private修饰,很少用public
// 属性都是public,从来不用private
// 字段尽量定义成私有的 如果想访问使用属性
//(4)属性可以为私有字段进行扩展
//(5)属性可以分别有一个set 和get 方法组成。(或者称为访问器)
//(6)字段可以读写均可,也可以用readonly限制为只读,但是不能添加业务逻辑。
// 属性可以轻松的实现单独读写控制,并且可以添加任意需要的业务逻辑。
//调用的方法
//调用实例属性 属性的调用方式和字段一致 但是本质是方法
//调用abc属性的set方法
myClass.abc = 200;
//调用abc属性的get方法
Console.WriteLine(myClass.abc);
//属性是类中的成员 属性本质就是函数
// 实例属性
public int abc
{
get
{
//return 的数据类型 和 abc的 类型一致
return 10;
}
set
{
//value 是索引器(set 方法)中的关键字
//value 代表属性在外部调用时 赋值的结果
Console.WriteLine(value);
Console.WriteLine("abc属性set方法被调用");
}
}
调用私有字段
//调用方法
myClass.Height = 1000;
Console.WriteLine(myClass.Height);
//私有字段_height
private int _height;
//共有属性Height
public int Height
{
get
{
return _height;
}
set {
_height = value;
}
}
属性对字段的扩展
//调用方法
myClass.Number = 100;
Console.WriteLine(myClass.Number);
private int _number;
//属性对字段的扩展
public int Number {
set
{
if (value > 10)
{
_number = 10;
Console.WriteLine("赋值超过最大范围 默认给予最大值");
}
else {
_number = value;
}
}
get {
return _number;
}
}
只写属性
//调用方法
//只写属性
myClass.NameNumber = 3000;
//Console.WriteLine(myClass.NameNumber);
private int _nameNumber;
public int NameNumber
{
set {
_nameNumber =value;
}
}
只读属性
//调用放法
//只读属性
// myClass.NameNumber1 = 100;
Console.WriteLine(myClass.NameNumber1);
//只读属性
private int _nameNumber1 =500;
public int NameNumber1
{
get
{
return _nameNumber1;
}
}
private string _name123444;
语法糖
//调用方法
myClass.Weight = 100;
Console.WriteLine(myClass.Weight);
//语法糖
//可读可写
public int Weight { get; set; }
//具有默认值的属性
public string StrNumber { get; set; } = "属性直接初始化";