多态性 - 运动

时间:2011-07-01 12:48:52

标签: c#

好的,这就是练习:

  

定义一个名为student的类,   包含三个等级的学生。   该类将具有该功能   计算平均成绩。现在,   定义一个名为student1的类   将来自学生和意志   添加一个函数来计算总和   成绩。在主程序中,定义   学生变量和类型的对象   student1。执行放置   对象变量并运行   学生的功能。

注意:这不是作业,我是自己学习的。 这是代码:

class Student
{
    protected int grade1, grade2, grade3;
    public Student(int grade1, int grade2, int grade3)
    {
        this.grade1 = grade1;
        this.grade2 = grade2;
        this.grade3 = grade3;
    }
    public double Average()
    {
        return (grade1 + grade2 + grade3) / 3;
    }
}
class Student1 : Student
{
    public Student1(int grade1, int grade2, int grade3)
        : base(grade1, grade2, grade3)
    {
    }
    public double Sum()
    {
        return grade1 + grade2 + grade3;
    }
}
class Program
{
    static void Main(string[] args)
    {
    }
}

我真的不知道在主课上要做什么,我该如何进行这个位置呢?我想知道这样做有什么好处,让我知道到目前为止我是否有错误,非常感谢。

4 个答案:

答案 0 :(得分:1)

完全按照练习描述的内容:

// Define a student variable.
Student s;

// And object of type Student1.
Student1 s1 = new Student1(10, 5, 8);

// Perform placement of the object to variable.
s = s1;

// And run the function of Student1.
// But it makes no sense...
s1.Sum();

// Maybe the exercise wants it:
((Student1)s).Sum();

// Which makes no sense too, since is making an idiot cast.
// But for learning purposes, ok.

嗯,我不认为这项工作有利于polymorphism in C#。我建议您阅读链接以查看真实的使用示例。

答案 1 :(得分:1)

从OOP角度看,我在代码中看到的主要缺陷是让Student1从Student扩展。使用继承时,请确保它是一个真正的扩展(是a)。通过制作1个学生班并实施Sum和Average方法,您可以获得更好的服务。

我认为从OOP的角度来看,以下内容就足够了。

class Student
{
    protected int grade1, grade2, grade3;

    public Student(int grade1, int grade2, int grade3)
    {
       this.grade1 = grade1;
       this.grade2 = grade2;
       this.grade3 = grade3;
    }

    public double Average()
    {
        return (grade1 + grade2 + grade3) / 3;
    }

    public double Sum()
    {
        return grade1 + grade2 + grade3;
    }
}

答案 2 :(得分:1)

也许这就是它意味着什么......虽然它在我眼中的措辞非常糟糕。

在主程序中,定义学生变量和student1类型的对象。执行将对象放置到变量并运行student1的功能。

static void Main(string[] args)
{
    //define a student variable and object of type student1.
    Student student = new Student1(100, 99, 98); 

    //Perform placement of the object to variable and run the function of student1
    var sum = ((Student1)student ).Sum();

}

答案 3 :(得分:1)

好的:我想这就是他们正在寻找的东西,虽然英语有点啰嗦:

1)声明学生变量

 Student s;

2)声明Student1对象

 Student1 s1 = new Student1(1,2,3);

3)将对象放置到变量:

s = s1;

4)运行该函数(注意,您必须将s转换为Student1类型以访问Type特定函数Sum)

Console.WriteLine(((Student1)s).Sum());