2016-10-11 3 views
1

Wenn eine Klasse eine andere Klasse erweitert, kann die erweiterte Klasse initialisiert und nicht erweitert werden?Wenn eine Klasse eine andere Klasse erweitert, kann die erweiterte Klasse initialisiert und nicht erweitert werden?

Beispiel 1:

public class FoodListAdapter extends BaseAdapter{ 
    //rest of the codes in here 
} 

Beispiel 2:

public class FoodListAdapter { 
    private BaseAdapter fAdapter; 
    //rest of the codes here 
} 

Kann Example2 ein ähnliches Ergebnis wie das von Example1 geben?

+1

One ist eine [** is-a **] (https://en.wikipedia.org/wiki/Is-a) Beziehung genannt. Die andere wird als [** has-a **] (https://en.wikipedia.org/wiki/Has-a) Beziehung bezeichnet. –

Antwort

0

Beispiel 1 ist Vererbung.

Beispiel 2 ist Aggregation, eine direktionale Einwegverbindung, die eine Has-A-Beziehung darstellt.

Beispiel 1 ist spröder, da es Benutzer direkt der zugrunde liegenden Klasse BaseAdapter aussetzt. Beispiel 2 kann Aufrufe an BaseAdapter kapseln und delegieren. Wenn Sie eines Tages entscheiden, BaseAdapter zu entfernen, müssen Benutzer der FoodListAdapter Klasse nie wissen.

+0

Bitte, wenn Beispiel2 möglich ist, wie wird es mit BaseAdapter codiert? – emmet4u

+0

Wie Sie bereits getan haben, übergeben Sie einfach ein BaseAdapter von Konstruktor oder Setter-Methode. – UserF40

Verwandte Themen