Domanda

Considera questa gerarchia di classi:

  • Book extends Goods
  • Book implements Taxable

Come sappiamo, esiste una relazione tra una sottoclasse e la sua superclasse (is-a).

D: Esiste una relazione come " is-a " tra Book e Taxable?

BUONE Risposte, ma hai detto che " is-a " è anche una relazione tra <=> e <=>, ma " is-a " è una relazione tra classi e un'interfaccia non è una classe!

È stato utile?

Soluzione

Sì. La relazione è esattamente la stessa

Anche il libro è tassabile.

Modifica

Un'interfaccia è un artefatto che corrisponde alla parola chiave Java (e probabilmente C # non lo so) interface.

Nell'interfaccia OO è l'insieme di operazioni che una classe viene "impegnata" e non fa altro. È come un contratto tra la classe di oggetti e i suoi clienti.

I linguaggi di programmazione OO i cui non hanno una parola chiave <=>, hanno ancora il concetto OO dell'interfaccia di classe.

Altri suggerimenti

Beh, c'è " support-the-operations-of " ;. Personalmente non trovo il & Quot; is-a & Quot ;, & Quot; can-do & Quot; ecc. mnemonici per essere estremamente utili. Preferisco pensare in termini di ciò che i tipi consentono, sia che si tratti di specializzare il comportamento esistente o di implementare il comportamento stesso ecc. Le analogie, come le astrazioni, tendono ad avere delle perdite. Se sai qual è la differenza tra eredità dell'interfaccia e eredità dell'implementazione, probabilmente non hai bisogno di alcuna fraseologia aggiuntiva per esprimerla.

" Si comporta come ... "

Ecco cosa direi. Non è qualcosa, ma si comporta come qualcosa. O come alternativa & Quot; può qualcosa & Quot ;, ma questo è più specifico del comportamento.

la relazione sarebbe come indicato: 'implements'

questi nomi di relazioni derivano dall'uso nelle frasi. " Book 'is-a' Goods " può essere scritto senza virgolette e trattino e ha senso. allo stesso modo, il libro 'attrezzi' imponibile può essere scritto senza virgolette.

Quando diciamo che una classe estende un'altra classe, sta avendo una forte relazione nota come 'ereditarietà'. Ciò significa che quando un bambino estende un genitore, allora il bambino dovrebbe essere in grado di ereditare qualcosa dalla classe genitore come il cavallo È un animale. Il cavallo sta ereditando alcune proprietà degli animali. Ma quando una classe implementa un'altra classe, allora la classe figlio sta cercando di implementare un contratto, non è necessario ereditare nulla dal genitore semplicemente seguendo un contratto, perché l'interfaccia di tutti i metodi è astratta per impostazione predefinita, ma puoi fornire un po 'di concreto metodo in classe (che la classe figlio eredita) e che può rendere alcuni degli astratti va bene.

Quindi per me estende l'ereditarietà e l'interfaccia nell'esecuzione del contratto. Spero che questo sia soddisfacente

Questo dovrebbe fare:

public static boolean implementsInterface(Object object, Class interf){
    return interf.isInstance(object);
}

Ad esempio,

 java.io.Serializable.class.isInstance("a test string")

restituisce true.

da: Verifica se l'oggetto implementa l'interfaccia

Di cosa si tratta? I molteplici punti interrogativi e più punti esclamativi?

Ti dà fastidio che possiamo dire che un libro è tassabile, anche se tassabile è un'interfaccia? Per favore, calmati.

Esistono diverse parole chiave nella lingua per una relazione di classe con un'interfaccia e una superclasse, ma la natura concettuale di quella relazione è la stessa, quindi è del tutto ragionevole usare gli stessi termini inglesi per descriverla. Un libro è tassabile, così come un libro è un bene. Per avvicinare ulteriormente i termini, un libro è un soggetto imponibile. Va bene.

Book implements Taxable

Qui anche la relazione tra Book e Taxable è

  

Libro "è un" soggetto passivo

Riferiscilo . Puoi vedere dice

  

Quando parliamo di ereditarietà la parola chiave più comunemente usata sarebbe estende e implementa . Queste parole determinerebbero se un oggetto IS-A è un altro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top