封装:什么Getterreturns?
Encapsulation : what Getter returns?
在封装中,get 是只读的,而 set 是只写的
为什么不使用特殊成员函数时我的输出是11110?
代码:
class practice_4
{
static void Main(string[] args)
{
example ABC = new example();
// ABC.Roll_ = 11;
Console.WriteLine(ABC.Roll_ );
Console.ReadLine();
}
}
class example
{
private int roll = 11110;
public int Roll_
{
get
{
return roll ;
}
//set{
// if (value > 10)
// { roll = value; }
// else
// { Console.WriteLine("error"); }
//}
}
//public example()
//{
// roll = 110;
//}
}
输出:
11110
但是当我使用特殊成员函数时:public example()
class practice_4
{
static void Main(string[] args)
{
example ABC = new example();
Console.WriteLine(ABC.Roll_ );
Console.ReadLine();
}
}
class example
{
private int roll = 11110;
public int Roll_
{
get
{
return roll ;
}
}
public example()
{
roll = 110;
}
}
所以它显示输出:
110
并丢弃 11110
在示例 class 中,您调用的是 roll 变量而不是 Roll_ 属性。如果您尝试设置 Roll_ 而不是您会收到编译时错误,提示您无法修改只读 属性。封装的目的是防止外界直接修改值,防止class修改值不到位
回答你的问题"Why my output is 11110 when not using special member function?"
你的class中的特殊成员函数是你的class的Constructor,也就是说这是initializes/constructs的特殊函数你的对象来自你的 class 定义,这里要记住的规则是,在你的私有变量语句之后调用构造函数,并且当构造函数完成时,构造完成,这意味着你的 class 的内部状态(变量)现在被分配(除其他外)。
但是,如果您像在 private int roll = 11110;
行中一样初始化私有变量,则该行会在调用构造函数之前执行。但是当你在构造函数中覆盖 roll 的值时,你的私有变量的值会被覆盖。
在封装中,get 是只读的,而 set 是只写的
为什么不使用特殊成员函数时我的输出是11110?
代码:
class practice_4
{
static void Main(string[] args)
{
example ABC = new example();
// ABC.Roll_ = 11;
Console.WriteLine(ABC.Roll_ );
Console.ReadLine();
}
}
class example
{
private int roll = 11110;
public int Roll_
{
get
{
return roll ;
}
//set{
// if (value > 10)
// { roll = value; }
// else
// { Console.WriteLine("error"); }
//}
}
//public example()
//{
// roll = 110;
//}
}
输出:
11110
但是当我使用特殊成员函数时:public example()
class practice_4
{
static void Main(string[] args)
{
example ABC = new example();
Console.WriteLine(ABC.Roll_ );
Console.ReadLine();
}
}
class example
{
private int roll = 11110;
public int Roll_
{
get
{
return roll ;
}
}
public example()
{
roll = 110;
}
}
所以它显示输出:
110
并丢弃 11110
在示例 class 中,您调用的是 roll 变量而不是 Roll_ 属性。如果您尝试设置 Roll_ 而不是您会收到编译时错误,提示您无法修改只读 属性。封装的目的是防止外界直接修改值,防止class修改值不到位
回答你的问题"Why my output is 11110 when not using special member function?"
你的class中的特殊成员函数是你的class的Constructor,也就是说这是initializes/constructs的特殊函数你的对象来自你的 class 定义,这里要记住的规则是,在你的私有变量语句之后调用构造函数,并且当构造函数完成时,构造完成,这意味着你的 class 的内部状态(变量)现在被分配(除其他外)。
但是,如果您像在 private int roll = 11110;
行中一样初始化私有变量,则该行会在调用构造函数之前执行。但是当你在构造函数中覆盖 roll 的值时,你的私有变量的值会被覆盖。