C シャープ クラスについて
C#のカテゴリが無く、その他(プログラミング)とどちらにしようか迷ったのですがこちらで質問します。
C#初心者です。今クラスについて勉強しているのですが、不思議に思うことがあるので質問します。
以下のコードは使っている教科書に載っているサンプルコードの一部です。
public class Student
{
//Data members, data fields, or characteristics
private int studentNumber;
private string studentName;
private int score1;
private int score2;
private int score3;
private string major;
//default constructor
public Student()
{
}
//constructor with one argument
public Student(int sID)
{
studentNumber = sID;
}
//constructor with two arguments
public Student(int sID, string name)
{
studentNumber = sID;
studentName = name;
}
//constructor with six arguments
public Student(int sID, string name,
int s1, int s2, int s3, string maj)
{
studentNumber = sID;
studentName = name;
score1 = s1;
score2 = s2;
score3 = s3;
major = maj;
}
(・・・その後もプロパティコードが続く)
Constructorにはクラス名と同じ名前を使うと解釈しているのですが、どうやって識別しているのでしょう?
例えば、Main()内で
Student thirdStudentObject = new Student(5432, "Randolph Wonder");
と
Student aStudentObject = new Student(1234, "Maria Smith", 97, 75, 87, "CS");
というコードがあるのですが、
Student thirdStudentObject = new Student(5432, "Randolph Wonder"); は
public Student(int sID, string name)
{
studentNumber = sID;
studentName = name;
}、
Student aStudentObject = new Student(1234, "Maria Smith", 97, 75, 87, "CS"); は
public Student(int sID, string name,
int s1, int s2, int s3, string maj)
{
studentNumber = sID;
studentName = name;
score1 = s1;
score2 = s2;
score3 = s3;
major = maj;
}
を呼び出しているのですよね?
上記の文では必要なアーギュメントが2個と6個なので数の違いからどのConstructorを使っているのかなんとなく分かりますが、もしも
public Student(int sID, string name)
{
studentNumber = sID;
studentName = name;
}
と
public Student(int sID, string SchoolName)
{
studentNumber = sID;
studentName = SchoolName;
}
などのように同じアーギュメント数もしくは同じデータタイプの場合、どうやって「どのConstructorを使うか」を識別させるのでしょうか?
同一クラス内に同じ数のアーギュメントを求めるものは作ってはいけなかったりするのでしょうか?
長い上に分かりづらい質問ですみません。
お礼
ご回答ありがとうございました。引数のないコンストラクタでは分りましたが、今度は引数がある場合のコンポジションについて考えて見ましたが分りませんので、今度は引数がある場合について投稿しました。解決できましたらご回答願います。 ありがとうございました。