在下面的简单程序中,为什么必须首先将其定义为私有,然后创建构造函数?我想我认为它首先是私有的,因为你不希望它被改变(我认为),然后你在公共场合再次定义它,以便可以在不同的类中查看,但为什么我必须以不同的方式命名?
我试图在别处寻求帮助,他们说“在C中你需要一个带有默认参数的类的变量的构造函数来初始化它。所以当你在主应用程序中运行它时,编译器知道它是什么。”但我不确定这意味着什么。这似乎有点复杂。
class Name
{
private String first, middle, last;
public Name(String fname, String mname, String lname)
{
first = fname;
middle = mname;
last = lname;
}
}
class Program
{
static void Main(String[] args)
{
Name myName = new Name("John", "Richard", "Smith");
}
}
}
答案 0 :(得分:1)
private
关键字表示该变量在其定义的类之外不可见。例如,如果您要在Main()
中编写代码,尝试访问first
,middle
或last
变量,则会出现错误。变量只能由Name
类中的代码私有访问。
相比之下,构造函数是public
,因此它可以在定义它的类之外显示。这就是当您从Main()
方法访问构造函数时没有收到错误的原因。
答案 1 :(得分:1)
您不必在构造函数之前定义私有变量,尽管您养成这样做的习惯很好,因为它可以帮助您保持代码的结构化和清洁。
C
不是C#
所以不用担心其他人说的话,
但是我会对它做出一些改变。
您的示例中缺少的内容称为public
accessibility modifier
,以便人们可以阅读您已设置的名称,这些名称目前是私有的,因此没有人比自己更了解他们......
想象一下基于这个例子的真实世界,你希望其他人能够读懂你的名字,知道你是谁,但你不会希望他们能够随意改变你的名字,它和#39;是你的名字。所以这里有相同的原则,我们允许其他人读取值,但不写入。
public class Name
{
private string firstName;
private string lastName;
public Name(String firstName, String lastName)
{
this.firstName = firstName;
this.lastName = lastName;
}
public string FirstName { get { return this.firstName; } }
public string LastName { get { return this.lastName; } }
}
class Program
{
static void Main(String[] args)
{
Name myName = new Name("John", "Richard");
Console.WriteLine(myName.FirstName);
Console.WriteLine(myName.LastName);
}
}