Video: Java Programming Tutorial - 49 - Inheritance 2024
Overname verwijst naar een functie van Java-programmering waarmee u klassen kunt maken die zijn afgeleid van andere klassen. Een klasse die is gebaseerd op een andere klasse erft van de andere klasse. De klasse die wordt overgenomen, is de superklasse bovenliggende klasse, de basisklasse , of de . De klasse die de overerving uitvoert, is de subklasse child class, de afgeleide klasse, of de .
Een subklasse neemt automatisch alle gedrag en attributen van zijn basisklasse over. Als u dus verschillende klassen wilt maken om typen te beschrijven die niet identiek zijn maar veel functies gemeen hebben, kunt u een basisklasse maken die alle algemene functies definieert. Vervolgens kunt u subklassen maken die de gemeenschappelijke functies overnemen.
Een subklasse kan kenmerken toevoegen aan de basisklasse die het overerft door zijn eigen methoden en velden te definiëren. Dit is een van de manieren waarop een afgeleide klasse zichzelf onderscheidt van de basisklasse.
Een subklasse kan ook het gedrag van de basisklasse veranderen. Een basisklasse kan bepalen dat alle klassen die daarvan zijn afgeleid een methode hebben met de naam play, bijvoorbeeld, maar elke klasse is vrij om zijn eigen implementatie van de afspeelmethode te bieden. In dit geval bieden alle klassen die de basisklasse uitbreiden hun eigen implementatie van de afspeelmethode.
Als u een subklasse wilt maken, gebruikt u het sleutelwoord extends op de klasseverklaring om de naam van de basisklasse aan te geven. Het basisformaat van een subklasse-declaratie is deze:
public class ClassName verlengt BaseClass {// class-body gaat hier}
De subklasse neemt automatisch de class-body van de basisklasse over, dus alle methoden of velden die worden gedefinieerd door de basisklasse worden automatisch opgenomen in de subklasse. Het klasselichaam voor een subklasse omvat dus alleen de methoden of velden die de subklasse onderscheiden van de basisklasse.
Stel dat u een klasse met de naam Ball heeft die een basisbal definieert en u een subklasse met de naam BouncingBall wilt maken die de mogelijkheid om te stuiteren toevoegt. Je zou dit op de volgende manier kunnen doen:
public class BouncingBall breidt Ball uit {public void bounce () {// de bounce-methode}}
Hier zijn enkele andere belangrijke details over het maken van subklassen:
-
Een subklasse erft alle leden uit de basisklasse. Constructeurs zijn echter niet beschouwd als leden. Als een resultaat, ervaart een subklasse niet constructors van zijn basisklasse.
-
De zichtbaarheid (openbaar of privé) van leden die zijn overgenomen van de basisklasse is dezelfde in de subklasse.Dat betekent dat u geen toegang hebt tot de subklasse methoden of velden die in de basisklasse als privé zijn gedeclareerd.
-
U kunt een methode overschrijven door een nieuw lid met dezelfde handtekening in de subklasse te declareren.
-
Een speciaal type zichtbaarheid genaamd protected verbergt velden en methoden uit andere klassen, maar maakt ze beschikbaar voor subklassen.
-
U kunt meer methoden of velden toevoegen - privé, openbaar of beveiligd - aan een subklasse.