L'incapsulamento è sicuramente possibile senza ereditarietà. L'incapsulamento è il concetto di nascondere i dati provenienti da oggetti esterni che non dovrebbero essere in grado di manipolarli. Un esempio di incapsulamento sarebbe costituito dai campi privati di un oggetto in Java. È quindi possibile utilizzare metodi pubblici (come getter e setter o altri metodi di calcolo) per manipolare i dati solo se necessario.
L'astrazione e il polimorfismo, tuttavia, sono direttamente correlati all'ereditarietà.
L'astrazione è quando si tolgono i dettagli di implementazione di un oggetto e si crea una classe astratta o un'interfaccia (parlando in termini di Java). Questo fungerà da contratto per ciò che qualsiasi classe implementante o ereditante dovrà includere nell'implementazione dettagliata. La classe astratta avrà firme di metodo, ma nessun corpo; la classe ereditaria implementerà i corpi.
Il polimorfismo è la capacità di implementare qualcosa di astratto in diverse forme. Ad esempio, se hai una classe astratta chiamata Animal che contiene un metodo speak(), puoi creare una classe Dog che eredita da Animal e implementare speak() per stampare "woof", mentre una classe Cat() implementerebbe speak () per stampare "meow".
Si noti che dipende dal tipo di polimorfismo in esame.È possibile, come affermato in un'altra risposta, avere il polimorfismo del parametro metodo/funzione e, come affermato, è possibile senza ereditarietà.
fonte
2016-04-11 15:18:20
Quindi, nell'incapsulamento. Stai dicendo che hai una lezione in cui hai tutti i metodi e vuoi nasconderlo al di fuori del mondo? destra? allora dov'è il tuo metodo di accesso? Se è nella stessa classe? allora non sono visibili? –
Intendevo dire che vuoi nascondere le proprietà della classe o dell'istanza dal mondo esterno, quindi costruisci metodi (setter, getter, ecc.) Per evitare l'accesso diretto ad essi. Questo è incapsulamento. – manolonte
La parte "etc" è essenziale. Alcune persone credono che l'incapsulamento significhi solo fornire getter e setter senza rendersi conto che si tratta in realtà di unire insieme i dati e il comportamento associato (cioè i metodi che fanno uso di tali dati). [http://www.javaworld.com/article/2075271/core-java/encapsulation-is-not-information-hiding.html](http://www.javaworld.com/article/2075271/core-java/ encapsulation-is-not-information-hiding.html) – Piovezan