Programmeren in Java/Package: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
DimiC88 (overleg | bijdragen)
kGeen bewerkingssamenvatting
Label: bewerking met nieuwe wikitekstmodus
DimiC88 (overleg | bijdragen)
Geen bewerkingssamenvatting
Label: bewerking met nieuwe wikitekstmodus
Regel 124:
 
==Meerdere klassen met dezelfde naam gebruiken==
Het kan voorkomen dat je twee klassen moet gebruiken met dezelfde naam.
 
<syntaxhighlight lang=Java>
import vehicles.motorvehicles.Bus;
import computer.Bus;
 
public class Main {
 
public static void main(String[] args) {
Bus bus = new Bus();
Bus computer = new Bus();
}
}
</syntaxhighlight>
 
Als je dit zou compileren zou je volgende fout kunnen krijgen:
 
<pre>
java: a type with the same simple name is already defined by the single-type-import of vehicles.motorvehicles.Bus
</pre>
 
In deze fout wordt gezegd dat er al een klasse geïmporteerd is geweest met de naam ''Bus'', en dat je dus niet nog eens een klasse met dezelfde naam kunt importeren. En dan kun je ook volgende fout krijgen.
 
<pre>
java: reference to Bus is ambiguous
both class vehicles.motorvehicles.Bus in vehicles.motorvehicles and class computer.Bus in computer match
</pre>
 
Hier wordt gezegd dat wanneer je bijvoorbeeld ''new Bus()'' doet dat de compiler niet weet welke ''Bus'' te nemen.
 
De eerste fout kun je eventueel oplossen door de wildcard te gebruiken in beide import statements, zoals volgt.
 
<syntaxhighlight lang=Java highlight=1-2>
import vehicles.motorvehicles.*;
import computer.*;
 
public class Main {
 
public static void main(String[] args) {
Bus bus = new Bus();
Bus computer = new Bus();
}
}
</syntaxhighlight>
 
Dit zorgt ervoor dat je niet expliciet de twee ''Bus'' klassen importeert, maar dit zorgt er niet voor dat Java weet welke ''Bus'' klasse er moet worden gebruikt. Om dit te verhelpen kun je de ''Fully Qualified Name'' gebruiken in je code om een linke te leggen met de juiste klasse.
 
<syntaxhighlight lang=Java highlight=4-5>
public class Main {
 
public static void main(String[] args) {
vehicles.motorvehicles.Bus computer = new vehicles.motorvehicles.Bus();
computer.Bus bus = new computer.Bus();
}
}
</syntaxhighlight>
 
Merk op dat de ''import'' statements verwijdert zijn, dit is geen fout, als je de ''Fully Qualified Name'' gebruikt hoef je geen ''import'' statements te gebruiken.
 
==Naamgeving==
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.