@memmas: Tänkte sätta mig och försöka förklara lite iallafall så gott jag kan just formuleringarna kan vara lite sisådär men kan försöka iallafall.
Om vi tar denna bit av kod först
package game;
public class MainClass {
public static void main(String[] args) {
//Skapar ett objekt av Player som ärver av Players
Players player = new Player();
//Skapar ett nytt objekt av Dealer samt parameter player
new Dealer(player);
}
}
Ett objekt är en kopia av en klass där en klass är en mall hur objekten ska se ut. Ett objekt kan du sedan ändra vissa delar på vilket gör att alla objekt kan se olika ut. T ex har du en klass som beskriver hur en mall på en bil där du har färg, hästkrafter, storlek på bil så kan du skapa flera objekt av denna klass och ha då olika färger etc på samtliga bilar.
En varningens tecken är dock statiska variablar och klasser dessa finns bara i en utgåva av och kallas klassparametrar eller klassmetoder och utan static menas då instans och det är dessa som går att ändra på.
Sen kan vi kika på en konstruktor
package game;
public class Dealer extends Players{
/*
* Konstruktorn tar ett kort och skriver sedan ut värdet av kortet.
* Sedan jämförs kortet som dealern har med totala värdet av spelaren och så länge dealern har lägre totalsumma så måste dealern ta ett kort.
* Varje runda kontrolleras totalsumman så att dealern inte har över 21
*/
public Dealer(Players player) {
drawnCard.add(deck.dealCard());
System.out.println("Dealer: ");
System.out.println("Dealern har totalt " + getValueOfCards());
while(getValueOfCards() < player.getValueOfCards()) {
drawnCard.add(deck.dealCard());
if(checkTotalValue(getValueOfCards())) {
System.out.println("Dealern förlorade, spelaren vann. Dealern fick totalt " + getValueOfCards());
System.exit(0);
}
System.out.println("Dealern har totalt " + getValueOfCards()); //Skriver ut totala kortsumman
}
System.out.println("Dealern vann");
}
}
En konstruktor kan användas för att utföra något när objektet skapas. I dettafall så utför denna konstruktor rätt så mycket genom att bara skapas och anledningen till att det är en klass som parameter är just att jag vill få tillgång till nästan allt i klassen.
Tänk dig som att jag ger dig en kasse med massa innehåll och du får sedan välja vad du vill använda från kassen.
Om vi tittar på new Car();så betyder detta att vi skapar ett objekt av Car där vi använder en default konstruktor som alltid finns även om vi inte skapar den själv och denna konstruktor tar inga parametrar.
new Car("röd", 130); kan t ex vara röd färg med 130hk.
Tanken med klasser är att kunna gruppera saker som hör ihop tillsammans och genom att använda metoder och klasser så behöver man inte skriva samma kod flera gånger.
Vill du t ex räkna arean på ett hus oavsett hur huset ser ut så kan det vara trevligt att kunna anropa en metod bara och skicka med vissa mått och sedan utför metoden det åt dig istället för att behöva skriva den koden på flera flera ställen.
Hm vad mer kan vara bra att veta?
Metoder och parametrar kan vara public,private och protected samt en nivå om man inte skriver något och dessa gör då olika saker där man kan komma åt i samma klass, samma klass i samma paket, alla paket oavsett.