Dziedziczenie - wątpliwości

0

Witam. Mam pytanie odnośnie dziedziczenia. Przykładowy kod:

class A
{
public:
     virtual int fun1()=0;
     virtual int fun2()
    {
        return 1;
    }
     virtual int fun2()
   {
       return 2;
   }
}

class B:public A
{
public:
      virtual int fun1()
     {
         return 90;
     }

     virtual int fun2()
    {
        return 34;
    }

}

class C:public A
{
public:
      virtual int fun1()
     {
         return 120;
     }

     virtual int fun3()
    {
        return 56;
    }

}


Moje pytanie jest takie: Klasa A jest klasą abstrakcyjną. Wiadomo, że jeżeli chcemy, aby klasy B i C były nieabstrakcyjne to musimy zdefiniować ciało metody fun1.
Przykład jest czysto dydaktyczny, więc może być nie za bardzo zrozumiały, ale postaram się opisać o co mi chodzi.

Załóżmy, że funkcja fun2 jest metodą, która ma sens tylko dla klasy B , a metoda fun3 ma sens tylko dla klasy C.
Czy można po prostu wpakować wszystkie metody do klasy bazowej (abstrakcyjnej), ciała tych funkcji zostawić puste ( {} ) i je odpowiednią zdefiniować dla klas potomnych, dla których mają sens ?

Proszę o jasną odpowiedz!

0

Jeśli zrobisz taką hierarchię klas to znaczy, że masz problem z designem. Funkcje powinny być tworzone tylko dla klas, w których mają sens (chociaż to nie zawsze jest takie proste). Jeśli chodzi o samą poprawność dla kompilatora to musisz podać poprawne ciało takiej domyślnej funkcji (t.j. nie możesz mieć pustego ciała jeśli masz coś z funkcji zwrócić).

przy okazji: fun2 masz dwa razy w A w przykładzie.

0

W klasie A maja być trzy metody: fun1 , fun2. fun3.

A jeżeli nie chciałbym nigdy wywoływać fun3 dla klasy B i fun2 dla klasy C to można w ten sposób robić?
Czy to jest obiektowe?
Na siłę próbuję dołożyć do mojego projektu dziedziczenie, chociaż według mnie w ogóle to nie jest tam potrzebne.

0

Wymóg prowadzącego. Program ma być w pełni obiektowy, a jedyne co w moim programie jest potrzebne to klasy, obiekty, atrybuty, metody i ewentualnie template'y. Zero dziedziczenia, o polimorfizmie nie wspomnę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1