Vererbung bei C++ und Java

Post Reply
Message
Author
Ferdinandus

Vererbung bei C++ und Java

#1 Post by Ferdinandus »

Hallo zusammen!

Irgendwie habe ich immer Probleme mit objektorientierten Sprachen. Nun habe ich mir ein weiteres Buch ueber C++ gekauft und mich wundert dort, dass man immer nur von _einer_ Klasse erben kann.

Haette es denn nicht Vorteile wenn man von mehreren Klassen erben koennte?

Dann koennte man zwar nicht mehr so schoene Vererbungsbaeume erstellen wie mit JavaDoc unter Java, da es dann moeglich waere dass eine Klasse halt auf zwei oder mehr anderen Klassen aufbaut, doch Vorteile haette es doch bestimmt.

Andererseits waere dieses Feature bestimmt schon in C++ integriert, wenn es Vorteile haette.
Daher frage ich mich:

Welche _Nachteile_ haette es, wenn eine Klasse von mehreren Klassen erben koennte?


MfG Ferdinandus

Sebastian Ude

Re: Vererbung bei C++ und Java

#2 Post by Sebastian Ude »

Man kann in C++ eine Klasse von mehreren Klassen ableiten !


Hier mal ein (zugegeben dummes) Beispiel:

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
/* (c) 2000 @ Sebastian Ude */
#include <iostream.h>

class processor
{
public:
processor(int);
int processor_info();
private:
int mhz;
};

processor::processor(int mhz)
{
processor::mhz = mhz;
}

int processor::processor_info()
{
return mhz;
}


class graka
{
public:
graka(int);
int graka_info();
private:
int memory;
};

graka::graka(int memory)
{
graka::memory = memory;
}

int graka::graka_info()
{
return memory;
}


class computer : public processor, public graka
{
public:
computer(int, int, bool);
void computer_info();
private:
bool linux_installed;
};

computer::computer(int mhz, int memory, bool linux_installed) :
processor(mhz), graka(memory)
{
computer::linux_installed = linux_installed;
}

void computer::computer_info()
{
cout << "Prozessortakt: " << processor_info() << endl;
cout << "Grafikkartenspeicher: " << graka_info() << endl;

if (linux_installed)
cout << "Hat Linux: JA" << endl;
else
cout << "Hat Linux: Nein" << endl;
}


int main()
{
class computer mypc(566, 16, true);

mypc.computer_info();

return 0;
}
</font><hr></pre></blockquote>

Post Reply