class 子类 : 父类
{// ...
}
// 超类:人
class Person
{public string Name;public int Age;public void Speak(){Console.Write("我叫{0},今年{1}岁。", Name, Age);}
}// 子类:老师(老师也是人,具备人的特征和行为,故直接继承超类Person,省略重复的编码)
class Teacher : Person
{public string Subject; // 教学科目// 上课public void ClassBegin() {Speak();Console.WriteLine("我是你们的{0}老师,现在开始上课。", Subject);}
}// 某方法内↓↓↓
Teacher tec = new Teacher();
tec.Name = "Mr.Bai";
tec.Age = 24;
tec.Subject = "C/C++/Java/C#";
tec.ClassBegin(); // 我叫Mr.Bai,今年24岁。我是你们的C/C++/Java/C#老师,现在开始上课。
// 使用2里面的栗子
Person person = new Teacher();
// 但是父类不能直接点子类的特征和行为,请继续看3.2
is
和 as
关键字is
:判断一个对象是否是指定类型的对象 bool
Console.WriteLine(tec is Person); // True
as
:将一个对象转换为指定类对象 指定类型对象
or null
Teacher teacher = person as Teacher;
if(person is Teacher){// 第一种写法Teacher t = person as Teacher;t.ClassBegin();// 第二种写法(person as Teacher).ClassBegin();
}
除了 关键字 不同,其他都是各门语言相通的
base
关键字 调用父类构造// 超类:人
class Person
{public string Name;public int Age;// 父类构造public Person(string name, int age){// ...}
}// 子类:老师
class Teacher : Person
{public string Subject; // 教学科目// 子类构造public Teacher(string name, int age, string subject) : base(name, age){// ...}
}
object
,是 Object
的别名 secled