Main Menu
  • Home
  • Programování Java
  • Programové vybavení
  • Hardware
  • Download
Nejčtenější články
  • Java - objekty, konstruktory, this
  • Křízený a přímý kabel
  • Java - operátory, výrazy, řídící struktury
  • Java - rozhraní, polymorfismus, výjimky
  • Java - metody a pole

Java - dědičnost a balíky

Dědičnost

Dědičnost využíváme pokud máme máme více tříd, mezi kterými potřebujeme přenášet metody nebo proměné. Vlastně se jedná o metodu „potomek“ a druhou třídu „rodič“. Rodič má nějake vlastnosti, které využívá (dědí) potomek. Rodič je samostatná část programu a nijak není ohraničení zároveň s main. S mainam spojíme až třídu potomek, která ma stejný název jako program.


Takže zápis vypadá způsobem:

class rodic{
zde si nadefinujem třídu tak jak už to známe
}
public class potomek extends rodic{
podobný postup jako u rodiče
public static void main(String[]args) {
hlavní část programu
}
}

.U rodiče definujeme třídu standartním způsobem. U potomka napíšeme příkaz extends který nám určí, ze které třídy budeme dědit. Jednotlivé proměné se ve třídě potomek definují pomocí příkazu super(jména proměných). Pokud vyvoláváme metodu z rodiče v potomkovy použijeme zase příkaz super.název_metody. Jinak metodu z rodiče můžeme v hlavním programu vyvolat s konstruktorem z potomka bez speciálního příkazu.


Př

class obdelnik {
public int sirka;
public int vyska;
public Obdelnik(int sirka,int vyska) {
this.sirka = sirka;
this.vyska = vyska;
}
public double delkaUhlopricky() {
double pom = (sirka * sirka) + (vyska * vyska);
return Math.sqrt(pom);
}
public int hodnotaSirky() {
return sirka;
}

public class kvadr extends obdelnik {
public int hloubka;
public kvadr (int sirka,int vyska,int hloubka) {
super(sirka,vyska);
this.hloubka = hloubka;
}
public double delkaUhlopricky() {
double pom = super.delkaUhlopricky();
pom = (pom * pom) + (hloubka * hloubka);
return Math.sqrt(pom);
}

public static void main(String[]args) {
kvadr kva = new kvadr (6,8,10);
System.out.println(“Uhlopricka je : “ + kva.delkaUhlopricky());
System.out.println(“Sirka je : “ + kva.hodnotaSirky());
System.out.println(“Vyska je : “ + kva.vyska);
}
}

Finální a abstraktní metody a třídy

Když k metodě nebo celé třídě dáme příkaz final, už nelze tato třída nebo metoda překrýt a je konečná. Na zápisu se nic nemění jen místo public dáme final.

Abstraktní metody fungujou stejně jako finální, jen je podmínka opačná. Tato metoda nebo třída musí být překrytá jinak nám program vyhodí chybu. Příkaz je abstract.

Privátní proměné metody

Jedná se o proměné, které nelze vyvolat jinde než ve třídě ve které jsou definované. Definice vypadá : private int název_proměné; Pokud tuto proměnou chceme získat mimo danou třídu musíme použít návratovou metodu getPromena(). Která nám bude tuto proměnou vracet. Tento tip se používá pro lepší zabezpečení. Privátní metody se používá stejně jako proměné. Lze je vyvolat jen v jejich třídě. Při zápisu místo public napíšeme private. Pokud budeme chtít proměnou z této metody získat mimo třídu budeme muset vytvořit veřejnou metodu, ve které tuto privatní metodu vyvoláme.

Balíky

-jsou knihovnami tříd, obsahující metody, které můžeme využívat v našich programech
-Math.sqrt(); - součástí java.lang.*;
-pro využití jen jedné části v balíku otevřete knihovnu s názvem této části
- import java.lang.Math.*;
-pokud se rozhodneme uplatnit jen určitou část balíku jako například když budete chtít použít jen odmocninu musíte více specifikovat celý balík
-import java.lang.Math.sqrt(*);

Přístupová práva

public – veřejná
private – soukromá
protected – možný přístup z jakékoliv odvozené třídy a přístup z libovolné třídy téhož balíku
bez modifikátoru – přístup v rámci téhož balíku

specifikátor v této třídě v jiné třídě téhož balíku v podtřídě téhož balíku v podtřídě jiného balíku v jiné třídě jiného balíku
Private ano ne ne ne ne
Neuvedeno ano ano ano ne ne
Protected ano ano ano ano ne
Public ano ano ano ano ano
 
Copyright © 2023 Výukový portál Háka Software. Designed by olwebdesign.com