tengo que crear un sistema de gestión de cursos con las categorías de cursos:¿Múltiples clases abstractas derivadas?
Cooking, sewing and writing courses
cooking
y writing
cada uno tiene 2 cursos (italiano, mariscos, escritura creativa y escritura de negocios). Esto crea derivada abstracta:
abstract course -> abstract cooking -> concrete seafood
La cocción abstracto y la escritura tienen campos comunes y algunos métodos comunes, sin embargo, también tienen métodos abstractos que son resumen en la clase base.
¿Se puede hacer esto en C#? Si hago que los métodos abstractos de clase abstracta sean abstractos, Visual Studio dice que ocultan el resumen de la clase base y luego los métodos de clase concretos tienen errores que dicen que la clase base debe ser abstracta (es, pero no debe registrarse). He buscado una respuesta. Sé que la herencia individual se usa en C#, pero la herencia arrastra la cadena. ¿Cuál es la mejor respuesta?
Aquí es un fragmento de código - espero que aclara el problema:
public abstract class Course
{
public abstract void AddStudent(StudentName sn, int f);
public abstract decimal CalculateIncome();
}
public abstract class WritingCourse : Course
{
public void AddStudent(StudentName sn, int f)
{
//Add student
}
public abstract decimal CalculateIncome(); // can only be claculated in concrete
}
public class BusinessWritCourse : WritingCourse
{
public void AddStudent(StudentName sn, int f):
base(sn, false){}
public decimal CalculateIncome()
{
return //do stuff
}
}
public class SewingCourse : Course
{
public override void AddStudent(StudentName sn, int f)
{
//do stuff
}
public override decimal CalculateIncome()
{
return //do stuff
}
}
Se puede publicar código de ejemplo, con los problemas que estamos encontrando? –