Třída je jakýsi návrh, šablona, která popisuje vlastnosti a chování objektů, které z ní mohou vzniknout.
public class Auto { private String značka; private String model; private String barva; public Auto(String značka, String model, String barva) { this.značka = značka; this.model = model; this.barva = barva; } public void zapnoutMotor() { System.out.println("Motor byl zapnut."); } // Další metody... }
Instance je konkrétní objekt vytvořený z určité třídy. Každá instance má své vlastní hodnoty atributů a může provádět metody této třídy. Zde mojeAuto je instance třídy Auto s konkrétními vlastnostmi jako značka "Toyota", model "Corolla" a barva "modrá".
Auto mojeAuto = new Auto("Toyota", "Corolla", "modrá");
Atribut je proměnná definovaná uvnitř třídy, která reprezentuje vlastnost objektu. Zde značka je atribut třídy Auto, který uchovává informaci o značce automobilu.
private String značka;
Metoda je funkce definovaná uvnitř třídy, která provádí určitou činnost s objektem této třídy.Zde zapnoutMotor() je metoda třídy Auto, která vypisuje zprávu o tom, že motor byl zapnut.
public void zapnoutMotor() { System.out.println("Motor byl zapnut."); }
Konstruktor je speciální metoda v třídě, která je volána při vytváření nové instance této třídy. Slouží k inicializaci objektu. Zde Auto() je konstruktor třídy Auto, který inicializuje novou instanci třídy s určitými hodnotami.
public class Auto { private String značka; private String model; private String barva; // Konstruktor třídy Auto public Auto(String značka, String model, String barva) { this.značka = značka; this.model = model; this.barva = barva; } }
Statický člen třídy je člen (atribut nebo metoda), který patří třídě jako celek, nikoli konkrétní instanci této třídy. Naopak nestatický člen patří každé instanci třídy zvlášť. Zde pocetAut je statický člen třídy Auto, který počítá celkový počet vytvořených instancí třídy. Metoda getPocetAut() je také statická a vrací tento počet.
public class Auto { private static int pocetAut; private String značka; private String model; public Auto(String značka, String model) { this.značka = značka; this.model = model; pocetAut++; // Inkrementace statického členu } public static int getPocetAut() { return pocetAut; // Statická metoda } }
Dědičnost umožňuje vytvářet nové třídy na základě již existujících tříd. Nová třída (podtřída nebo odvozená třída) může zdědit vlastnosti a chování již existující třídy (nadtřídy nebo rodičovské třídy) a může rozšiřovat nebo modifikovat tento funkcionality. Zde OsobníAuto je nová třída, která dědí vlastnosti a metody z třídy Auto. Metoda super() volá konstruktor rodičovské třídy pro inicializaci zděděných vlastností. Nová třída tak může přidávat nové vlastnosti a metody (například pocetDveri).
public class OsobníAuto extends Auto { private int pocetDveri; public OsobníAuto(String značka, String model, String barva, int pocetDveri) { super(značka, model, barva); // Volání konstruktoru rodičovské třídy this.pocetDveri = pocetDveri; } }
Zapouzdření znamená, že "citlivá" data jsou skryta před uživateli. Toho lze dosáhnout následujícím způsobem:
Deklarujte proměnné/atributy třídy jako soukromé.
Poskytujte veřejné metody get a set pro přístup a aktualizaci hodnot soukromých proměnných.
V tomto příkladu je proměnná jmeno soukromá, což znamená, že není přístupná zvenčí třídy Osoba. Nicméně můžeme získat a nastavit hodnotu této proměnné pomocí veřejných metod getJmeno() a setJmeno().
Metoda getJmeno() vrací hodnotu proměnné jmeno.
Metoda setJmeno() přijímá parametr noveJmeno a nastavuje hodnotu proměnné jmeno.
Tímto způsobem jsou data třídy Osoba uzavřena (encapsulated) v metodách, které umožňují bezpečný přístup k těmto datům zvenčí a zároveň zabraňují neautorizovaným změnám.
public class Osoba { private String jmeno; // soukromý atribut // Getter pro získání hodnoty jmena public String getJmeno() { return jmeno; } // Setter pro nastavení hodnoty jmena public void setJmeno(String noveJmeno) { this.jmeno = noveJmeno; } }
Veřejný a soukromý přístup jsou klíčová slova v Javě, která určují viditelnost členů třídy (atributů a metod).
Veřejný (public): Člen s veřejným přístupem je přístupný ze všude. Může být volán a použit z jakékoliv části programu.
Soukromý (private): Člen s soukromým přístupem je přístupný pouze uvnitř třídy, ve které je definován. Není přístupný zvenčí třídy.
Zde značka je veřejný atribut, který je přístupný zvenčí třídy, zatímco model je soukromý atribut, který je přístupný pouze uvnitř třídy Auto.
public class Auto { public String značka; // Veřejný atribut private String model; // Soukromý atribut public void getInfo() { System.out.println("Auto: " + značka + ", Model: " + model); } }
Interface je způsob, jak definovat soubor metod bez jakékoliv implementace. Třída pak může implementovat (realizovat) tento interface tím, že poskytne implementaci všech metod definovaných v tomto interface. Tímto způsobem může třída implementovat různé kontrakty a zapouzdřit různé chování. Třída Auto implementuje interface Prepravitelny a musí poskytnout implementaci metody prepravit().
interface Prepravitelny { void prepravit(); } class Auto implements Prepravitelny { public void prepravit() { System.out.println("Auto přepravuje."); } }
Statické pole je pole, které je deklarováno s klíčovým slovem static. Statické pole alokuje paměť v době kompilace a jeho velikost je pevně stanovena. Statické pole nelze měnit. Například, pokud máme int array[10], vytváříme pole o velikosti 10. To znamená, že můžeme vložit pouze 10 prvků; nemůžeme přidat 11. prvek, protože velikost pole je pevně stanovena.V tomto příkladu je array statické pole s velikostí 5. Statické pole se inicializuje v statickém bloku pomocí cyklu for, který naplní prvky pole čísly od 1 do 5. V metodě main jsou pak prvky pole vypsány.
public class StaticArrayExample { private static int[] array = new int[5]; // statické pole s velikostí 5 static { // Inicializace statického pole for (int i = 0; i < array.length; i++) { array[i] = i + 1; // prvky pole obsahují čísla od 1 do 5 } } public static void main(String[] args) { // Výpis prvků statického pole for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); // vypíše: 1 2 3 4 5 } } }
Dynamické pole je variabilní seznamová datová struktura. Rozšiřuje se automaticky, když se snažíme vložit prvek a není k dispozici žádný další prostor pro nový prvek. To nám umožňuje přidávat a odebírat prvky a měnit svou velikost během běhu programu. V Javě je implementováno pomocí třídy ArrayList z balíčku java.util. Tato třída poskytuje všechny metody související s operacemi nad seznamy. V tomto příkladu vytváříme dynamické pole pomocí třídy ArrayList. Přidáváme prvky do pole pomocí metody add() a přistupujeme k prvkům pole pomocí metody get(). Dynamické pole umožňuje snadno přidávat prvky a automaticky se přizpůsobuje jejich počtu, což znamená, že jeho velikost se může měnit za běhu programu.
import java.util.ArrayList; public class DynamicArrayExample { public static void main(String[] args) { // Vytvoření nového dynamického pole ArrayList<Integer> dynamicArray = new ArrayList<Integer>(); // Přidání prvků do dynamického pole dynamicArray.add(1); dynamicArray.add(2); dynamicArray.add(3); // Vypsání prvků dynamického pole System.out.println("Dynamické pole obsahuje:"); for (int i = 0; i < dynamicArray.size(); i++) { System.out.println(dynamicArray.get(i)); } // Přidání dalšího prvku do dynamického pole dynamicArray.add(4); // Vypsání aktualizovaných prvků dynamického pole System.out.println("Aktualizované dynamické pole obsahuje:"); for (int i = 0; i < dynamicArray.size(); i++) { System.out.println(dynamicArray.get(i)); } } }
System.out.println("Hello, world!"); // Výpis textu do konzole
Method | Description |
---|---|
nextBoolean() |
Reads a boolean
|
nextByte() |
Reads a byte
|
nextDouble() |
Reads a double
|
nextFloat() |
Reads a float
|
nextInt() |
Reads a int
|
nextLine() |
Reads a String
|
nextLong() |
Reads a long
|
nextShort() |
Reads a short
|
import java.util.Scanner; // Import třídy Scanner // Vytvoření instance Scanner pro čtení vstupu z konzole Scanner scanner = new Scanner(System.in); // Čtení celého čísla z konzole int number = scanner.nextInt(); // Čtení řetězce z konzole String text = scanner.next();