Я нахожусь на своей второй неделе ООП, наш преподаватель дал упражнение для передачи сообщений, у меня ошибка, которую я не могу решить. Ошибка:Сообщение об ошибке
Obj_Orientated_CD_MOVIE_Library.Movie' does not implement inherited abstract member 'Obj_Orientated_CD_MOVIE_Library.borrowCopy()'
, который, в свою очередь, привело к последующей ошибке:
Obj_Orientated_CD_MOVIE_Library.Movie.borrowCopy(Obj_Orientated_CD_MOVIE_Library.Student)': no suitable method found to override
Я не уверен, если я объяснил это правильно, вот код.
abstract class Item
{
protected int copies;
protected int availCopies;
protected string title;
public Item(string newTitle, int newCopies, int newAvailCopies)
{
title = newTitle;
copies = newCopies;
availCopies = newAvailCopies;
}
public abstract void borrowCopy(Student objStudent);
public abstract void returnCopy();
public int Copies
{
get
{
return copies;
}
set
{
copies = value;
}
}
public int AvailCopies
{
get
{
return availCopies;
}
set
{
availCopies = value;
}
}
public string Title
{
get
{
return title;
}
set
{
title = value;
}
}
}
class Student
{
public string date;
public string returnDate;
public Student(string newDate, string newReturnDate, string newTitle, int newCopies, int newAvailCopies)
: base(newTitle, newCopies, newAvailCopies)
{
date = newDate;
returnDate = newReturnDate;
}
public void borrowMovie(Movie objMovie)
{
objMovie.borrowCopy(this);
}
public void borrowCD(CD objCD)
{
objCD.borrowCopy(this);
}
public override void borrowCopy(Student objStudent)
{
}
public override void returnCopy()
{
}
}
class Movie : Item
{
public string runTime;
public Movie(string newTitle, string newRunTime, int newCopies, int newAvailCopies)
: base(newTitle, newCopies, newAvailCopies)
{
runTime = newRunTime;
}
public string Runtime
{
get
{
return runTime;
}
set
{
runTime = value;
}
}
public override void returnCopy()
{
availCopies++;
Console.Write("\nThank you for returning the Movie\n");
}
public override void borrowCopy(Student objStudent)
{
if (AvailCopies > 0)
{
AvailCopies--;
Console.Write("Please refer to receipt for return date of the Movie\n");
}
else
{
Console.WriteLine("\nThis Movie is not available at this time, please try again later");
}
}
}
class CD : Item
{
public string band;
public CD(string newTitle, string newBand, int newCopies, int newAvailCopies)
: base(newTitle, newCopies, newAvailCopies)
{
band = newBand;
}
public string Band
{
get
{
return band;
}
set
{
band = value;
}
}
public override void returnCopy()
{
availCopies++;
Console.Write("\nThank you for returning the CD\n");
}
public override void borrowCopy(Student objStudent)
{
if (AvailCopies > 0)
{
AvailCopies--;
Console.Write("Please refer to receipt for return date of the CD\n");
}
else
{
Console.WriteLine("\nThis CD is not available at this time, please try again later");
}
}
}
Конструктивная критика и помощь пожалуйста.
@JamesGaunt правильно, вы либо необходимо обновить подпись 'Item', чтобы включить аргумент' Student', или вырезать этот аргумент из 'Movie' реализации' loanCopy'. –
Не могли бы вы или Джеймс дать мне пример того, как он должен выглядеть? Я - визуальный ученик, когда я вижу, как он выглядит в коде, я понимаю это лучше. –
Возьмите то, что у вас есть, удалите 'Student objStudent' из' loanCopy() 'в' Movie', и он будет работать. Из того, что вы опубликовали, вы даже не используете этот объект «Студент» в методе. –