Κυκλική κληρονομικότητα τάξεων

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
Post Reply
User avatar
madMax
byte level
byte level
Posts: 90
Joined: Thu Jul 05, 2007 2:19 pm

Κυκλική κληρονομικότητα τάξεων

Post by madMax » Sun May 18, 2008 8:31 pm

Καλησπέρα,
Δεν έω ιδέα τι είναι η κυκλική κληρονομικότητα.

1)
class A
class B extends A, C
class C extends A

2)
class A
class B extends A
class C extends A
class D extends B
class E extends C, B

Στα 1,2 θα μπορούσε να έχουμε κυκλική Κληρονομικότητα ?
αλλά απο τη γραμματική της η γλώσσα δεν επιτρέπει "class B extends A,C" αλλά μόνο μια τάξη.

:?:
User avatar
mikem4600
Gbyte level
Gbyte level
Posts: 1363
Joined: Fri Mar 12, 2004 2:00 pm
Academic status: Alumnus/a
Gender:
Location: A Galaxy Far, Far Away
Contact:

Re: Κυκλική κληρονομικότητα τάξεων

Post by mikem4600 » Sun May 18, 2008 8:46 pm

Κυκλική κληρονομικότητα έχουμε όταν το κατευθυνόμενο γράφημα "συγγένειας" των τάξεων έχει κύκλο.

Στις περιπτώσεις που αναφέρεις αυτό δεν ισχύει.

Παράδειγμα κυκλικής κληρονομικότητας:

class A extends C
class B extends A
class C extends B

Όσον αφορά το αν μία τάξη μπορεί να κληρονομεί πολλές τάξεις, αυτό απαγορεύεται σε γλώσσες όπως η Java και επιτρέπεται σε άλλες, όπως η C++. Ακόμα και στην Java όμως επιτρέπεται η πολλαπλή κληρονομικότητα των interfaces.
Last edited by mikem4600 on Sun May 18, 2008 8:48 pm, edited 1 time in total.
Autocracy hates questions. Anarchy hates answers.
The Punisher
Venus Former Team Member
Posts: 7561
Joined: Thu Oct 27, 2005 1:43 pm
Academic status: Alumnus/a
Gender:
Location: Boston, MA

Re: Κυκλική κληρονομικότητα τάξεων

Post by The Punisher » Sun May 18, 2008 8:48 pm

Αν θεωρήσεις έναν κατευθυνόμενο γράφο με κόμβους τις τάξεις και βέλη από το παιδί στον πατέρα, κυκλική κληρονομικότητα είναι να έχει κύκλο ο γράφος. Τώρα εσύ έχει και πολλαπλή κληρονομικότητα στο παράδειγμά σου. Αυτό γενικά από τις managed γλώσσες δεν επιτρέπεται

------
αυτό θα πει συγχρονισμός mike ;)
Post Reply

Return to “Προγραμματισμός”