splyez Ответов: 4

не реализует наследуемый абстрактный класс


ОК. Так что у меня есть программа для работы с книгами и фильмами. Теперь у меня есть 1 базовый класс и 2, которые наследуются от него.

Когда я пытаюсь запустить его, я получаю "не реализует унаследованный абстрактный член"

автоматически.:
public abstract class saker
   {
       public string titel;
       public string genre;
       public int pris;
       public abstract string book(string t, string g, int p, int page);
       public abstract string movie(string t, string g, int p, double l);
       public abstract string visainfo();
   }



классный фильм:
class  film : saker
  {
          double langd;
          public override string movie(string t, string g, int p, double l)
          {
              this.langd = l;
              this.titel = t;
              this.genre = g;
              this.pris = p;
          }
          public override string visainfo()
          {
              string s;
              s = "Titel: " + titel + " Genre: " + genre + " Pris: " + pris + "kr Langd: " + langd;
              return s;
          }
  }



Так что же я делаю не так?

[Edit - ответ от OP переехал сюда - Генри]
ах, нет его там, я просто забыл добавить фрагмент кода
public class bok : saker
{
    int sidor;
    public override string book(string t, string g, int p, int page)
    {
        this.sidor = page;
        this.titel = t;
        this.genre = g;
        this.pris = p;
    }
    public override string visainfo()
    {
        string s;
        s = "Titel: " + titel + " Genre: " + genre + " Pris: " + pris + "kr Sidor: " + sidor;
        return s;
    }
}


[/Редактировать]

4 Ответов

Рейтинг:
31

Nish Nishant

Ты промахнулся book это тоже должно быть реализовано.

Основываясь на вашем обновленном вопросе, вы не можете реализовать абстрактные методы над несколькими классами, где ни один класс не реализует их все. Это не так работает. Каждый производный класс должен реализовать все абстрактные методы из базового класса.


Sergey Alexandrovich Kryukov

Мой 5. одолжил книгу-не забудьте положить обратно!
--СА

Nish Nishant

:-)

Sandeep Mewara

- Ага! Правильно. 5!

Рейтинг:
26

Henry Minute

В вашем классе балобанов есть три абстрактных члена. Вы должны реализовать все три в каждом потомке.

Так что ваш класс должен реализовывать кино книга и фильм и книгу класс должен реализовывать кино, а также книги.

Похоже, вам нужно перепроектировать свой класс балобанов.


splyez

я с, я посмотрю на это, да, я не уверен, что это правильный путь, но

Nish Nishant

Проголосовали 5, Генри. Лучшее объяснение.

Sergey Alexandrovich Kryukov

Да, скажите им: "вы должны!". Мой 5.
--СА

Sandeep Mewara

Просто и прямо! 5!

Рейтинг:
18

Smitha Nishant

Вот альтернативное предложение по дизайну:

public interface IBook
{
    string book(string t, string g, int p, int page);
}
interface IMovie
{
    string movie(string t, string g, int p, double l);
}
public abstract class saker
{
    public string titel;
    public string genre;
    public int pris;
    public abstract string visainfo();
}
public class Book : saker, IBook
{
    public override string visainfo()
    {
        throw new NotImplementedException();
    }
    public string book(string t, string g, int p, int page)
    {
        throw new NotImplementedException();
    }
}
public class Movie : saker, IMovie
{
    public override string visainfo()
    {
        throw new NotImplementedException();
    }
    public string movie(string t, string g, int p, double l)
    {
        throw new NotImplementedException();
    }
}


Рейтинг:
1

NAGI SETTY A

right click on base class (after :) while deriving into derived class and then select implement, then it will create dummy method[s] in derived class according to your abstract class methods signatures.