Я работаю над заданием, которое позволит пользователю покупать билеты на несколько разных типов событий. Я должен использовать класс для билетов, которые не могут быть созданы, с подклассом для каждого из конкретных типов билетов.абстрактное наследование в C#
Я бежал в мою первую корягу, которая является то, что параметры на базовый конструктор подкласса дает мне ошибку «Ссылка на объекте требуется для нестатического поля»
Вот базовый класс
abstract class Ticket
{
public int ticketcount;
public double ticketprice;
public Ticket()
{
ticketcount = 0;
ticketprice = 0;
}
public Ticket(int ticketcount, double ticketprice)
{
this.ticketcount = ticketcount;
this.ticketprice = ticketprice;
}
}
и вот подкласс.
class PlayTicket : Ticket
{
public PlayTicket() : base()
{
}
public PlayTicket(string sn) : base(ticketcount, ticketprice)
{
}
}
ошибка происходит на линии
public PlayTicket(string sn) : base(ticketcount, ticketprice)
где переменные "ticketcount" и "ticketprice" есть. Как мне лучше всего обойти это? Или я полностью не понимаю, как и почему использовать не-instatiatable класс?
Ну, где вы ожидаете, что он получит «ticketcount» и «ticketprice»? Вы создаете новый объект. Вероятно, у вас должны быть такие дополнительные параметры. (Кроме того, вы должны использовать 'ticketCount' и' ticketPrice' как имена и, вероятно, использовать 'decimal' вместо' double' в качестве типа цены.) –
Что вы пытаетесь сделать с 'public PlayTicket (string sn): base (ticketcount, ticketprice) '? Вам необходимо предоставить значения для параметров базового конструктора, например 'public PlayTicket (string sn): base (1, 25)' –
Не должно ли это работать, поскольку PlayTicket выходит из Ticket? Книга, которую мы используем, демонстрирует, что она работает именно так. – shrimppunk