我正在开发用于计算和显示表格中不同报告的软件。但表的结构没有太大差异,许多列是相同的。我首先为每个报告创建了一个类,例如:
class Student()
{
int Class {get; set;}
int Name {get; set;}
int Age {get; set;}
}
class Employee()
{
int Name {get; set;}
int Age {get; set;}
int Salary{get; set;}
}
... and more similar classes
但是在创建了一些类之后我意识到,它们中的许多都有共同的属性,我可以创建公共类:
class HumanReport()
{
int Class {get; set;}//doesn't exist for Employee(null)
int Name {get; set;}
int Age {get; set;}
int Salary{get; set;}// doesn't exist for Student
}
但在这种情况下,许多属性将包含NULL。哪种方式更适合面向对象的编程?
答案 0 :(得分:5)
您应该创建一个包含公共字段的基类,然后将其扩展为专用字段
class Human
{
int Name {get; set;}
int Age {get; set;}
}
class Employee : Human
{
int Salary{get; set;}
}
class Student : Human
{
int Class {get; set;}
}
这称为继承,是OOP的一个关键功能。
以下是有关继承概念的MSDN文档。
答案 1 :(得分:2)
我想说创建它使得基类具有所有类的成员。
像
这样的东西class HumanReport
{
int Name {get; set;}
int Age {get; set;}
}
class Student : HumanReport
{
int Class {get; set;}
}
class Employee : HumanReport
{
int Salary{get; set;}
}
我想你应该在这里阅读
Inheritance (C# Programming Guide)
继承,以及封装和多态,是其中之一 面向对象的三个主要特征(或支柱) 节目。继承使您可以创建可重用的新类, 扩展,并修改其他类中定义的行为。该 其成员被继承的类称为基类,而 继承这些成员的类称为派生类。
答案 2 :(得分:1)
将所有(或许多)报告所包含的所有属性放入一个类中:
class Person
{
string Name {get; set;}
int Age {get; set;}
}
然后有从这些继承的特殊类:
class Student : Person
{
int Class {get; set;}
}
class Employee : Person
{
int Salary {get; set;}
}
这样你就不会重复自己了。您可能希望熟悉Inheritance。它是面向对象编程的核心概念之一。