【发布时间】:2018-06-11 16:34:50
【问题描述】:
我目前正在研究继承和多态性,我有点困惑你想在哪里创建一个 Student 类型的 Person 对象? 假设以下代码:
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Gender { get; set; }
}
class Student : Person
{
public int YearOfStudy { get; set; }
public string Course { get; set; }
public string PredictedGrade { get; set; }
}
现在在网上看,这里有几个关于创建对象的选项:
Person p = new Person();
Student s = new Student();
Person ps = new Student();
第一个对象允许我设置姓名、年龄和性别,而第二个对象允许我设置这 3 个,以及 yearsOfStudy、course 和 predictGrade。但我不确定第三个对象允许我做什么?我仍然可以设置所有 6 个参数,但是我只能使用 Person 类中设置的属性吗?任何关于正确使用第三个对象的解释都将不胜感激。
谢谢
【问题讨论】:
-
到底什么是令人困惑的部分?如果您创建一个新的
Student(),您可以填充Student的3 个属性和Person的3 个属性。但是,除非您的变量类型为Student,否则您将无法访问这两组属性 -
当你创建一个新的教师类型时,力量就在于此。您将如何对教室中的每个人执行相同的操作?将它们全部转换为 Person 并迭代集合,对它们执行相同的操作(DuckAndCover()?)
-
想想你什么时候有办法验证年龄。您的验证方法将采用
Person,因为这就是所需要的。它适用于Person和Student以及其他任何构成Person的东西。 -
@那个方法名,太快了……哈哈
-
我认为问题更多的是我为什么要将继承类型的实例声明为其基类型
标签: c# inheritance polymorphism