Vraag1. Waarom heeft methode main altijd het volgende statement:
new classNaam();
voorbeeld
public static void main( String [] Args]{
new classNaam();
}
Dat hoeft niet, dat is nu toevallig zo in een aantal voorbeelden die je hebt gezien. De main methode moet altijd met static void worden aangeroepen zodat je van buiten af een applicatie kan starten. Alles wat in die main mehtode staat verschilt per programma. De constructie zie je wel vaak omdat je op die manier de constructor aanroept van een object die waarschijnlijk centraal staat in je applicatie, maar je kan ook een ander object aanmaken (of geen).
Vraag 2. ( komt uit een boek)
public class CoffeeTester{
NiceCoffeeMaker myCoffeMaker;
public static void main ( String [] Args) {
CoffeeTester c = new CoffeeTester ();
c.myCoffeMaker = new NiceCoffeeMaker();
c.myCoffeMaker = brewThisMuch (3);
}
Ik snap niet waarvoor die c is!
We kunnen die c weghalen en het volgende gebruiken:
new CoffeeTester ();
myCoffeMaker = new NiceCoffeeMaker();
myCoffeMaker = brewThisMuch (3);
Het resultaat blijft hetzelfde toch?
[/code]
Nee de code die je hier plaatst kan niet en om de volgende reden. Normaal kan je een variabele aanmaken van een bepaald objectsoort (officieel genaamd een instantie van een object) dat gaat op de manier:
MijnObject o = new MijnObject();
Dit is het aanroepen van de constructor. Er is dus ergens een klasse met de naam MijnObject en in de huidige code geeft ik aan dat de variabele o van het type MijnObject is. Omdat ik dit aangeeft kan ik variabelen en methoden aanroepen die in dat object zitten, bijvoorbeeld de methode toString().
MijnObject o = new MijnObject();
System.out.println(o.toString());
Wat er zal gebeuren is dat er iets naar het scherm gezegd wordt en de inhoud van het bericht is wat de methode(oftwel een functie) toString() terug geeft. Die o, of c in jouw voorbeeld, heb je nodig om aan te kunnen geven waar je op dat moment over praat. Als je alleen nieuwe objecten zou aanmaken zonder later te kunnen zeggen dat je met dat ene object iets wil doen, heeft het ook weinig nut natuurlijk.
Je weet waarschijnlijk dat een Class methoden en variabelen kan bevatten. Wat je in jouw voorbeeld code doet is het volgende:
CoffeeTester c = new CoffeeTester ();
c.myCoffeMaker = new NiceCoffeeMaker();
eerst maak je een instantie van het object CoffeeTester aan en die instantie noemen we c. Vervolgens is er blijkbaar in de classe CoffeTester een variabele die heet myCoffeMaker want we kunnen die variabele binnen CoffeeTester een nieuwe waarde geven, namelijk dat deze een instantie is van NiceCoffeeMaker.