Java
Iz E-študij, proste zakladnice študentskega znanja
Vsebina |
Določila
| Določilo | Vmesnik (Interface) | Razred (Class) | Nadrazred (Class) | Abstract | Metoda |
|---|---|---|---|---|---|
| public | dostopno povsod | ||||
| protected | dostopno le v razredu in podrazredih | ||||
| private | dostopno le v razredu, ne v podrazredih | ||||
| abstract | × | vsebuje vsaj 1 abstraktno metodo | vsaj eno abs. metodo | × | metoda ni definirana, definirana bo v podrazredu |
| final | × | nima podrazredov | nima podrazredov | konstanta (vrednost se ne spreminja) | metode se ne da spremeniti v podrazredih |
| static | × | × | zunanji razred | ena vrednost za vse objekte razreda | enaka izvedba za vse objekte razreda |
Primer programa napisanega v Javi, ki izpiše: "Hello, world!"
public class Hello { public static void main(String[] args) { System.out.println("Hello, World!"); } }
Več primerov lahko najdete v zbirki programov.
Ročno prevajanje izvorne kode
- Shranimo izvorno kodo s končnico .java
- Prevedemo z ukazom javac imeprograma.java
- Zaženemo z ukazom java imeprograma
Velja opozorilo da se mora ime, ki smo ga definirali s public class, ujemati z imenom datoteke. Java ločuje tudi med velikimi in malimi znaki.
Osnovni podatkovni tipi
- numerični tipi
- cela števila
- byte (8) -128 -- 127
- short (16) -32768 do -- 32767
- int (32) -2147483648 -- 2147483647
- long (64) -9.22*1018 -- 9.22*1018
- realna števila
- float (32) -3.4*1034 -- 3.4*1034 (6–7 mest)
- double (64) -1.7*10308 -- 1.7*10308 (14-15 mest)
- cela števila
- logične vrednosti
- boolean (8)
- znaki
- char (16)
Pomembnost podatkovnih tipov
Pomembnost pomeni, da se bo iz manj pomembnega tipa pretvoril tip v bolj pomembnega, če sta prisotna oba. Primer:
int a = 441; float b = 3.22F; float c = a*b;
Ker je float bolj pomemben tip ter int manj, bo zmnožek a*b tipa float (pomembnejši tip).
Sledijo si od najbolj pomembnega do najmanj pomembnega:
- double
- float
- long
- int
- short
- byte
Privzeta tipa
Če števil 441 ali 3.22 ne typecastamo, se samodejno predstavita:
- 441 kot int
- 3.22 kot double
Zato pri stavku:
float f = 3.22;
dobimo napako possible loss of precision (možna izguba natančnosti) med prevajanjem programa. Pravilen zapis bi bil
float f = (float)3.22;
ali
float f = 3.22F;
Kontrola toka
- zaporedje (ang. sequence)
- izbira (ang. selection)
- ponavljanje (ang. iteration)
Deklaracija razreda
- glava razreda (ang. class header)
- način dostopa: public / (final) / (abstract)
- deklaracije atributov
- način dostopa: private / protected
- deklaracije metod
- konstruktor (ang. constructor)
- “setty”metode (ang. mutator)
- “getty” metode (ang. accessor)
- pomožne metode (ang. utility)
- način dostopa: public / private
Kreiranje objektov
Dva koraka:
- deklaracija objekta
- Point p;
- generiranje objekta
- p = new Point (3,6);
Primer: razred TestPoint ...
Dopolnitev razreda
Razred lahko dopolnimo na več načinov:
- več konstruktorjev
- utility metode
Primeri dopolnitev:
- metoda equals
public boolean equals(Object object) { if (object == this) return true; if (object.getClass() != this.getClass()) return false; Point1 point = (Point1) object; return (x == point.x && y== point.y); //enako kot return (this.x == point.x && this.y ... }
Uporaba:
p1.equals(p2);
Primerja, če sta objekta enaka po razredu in lokaciji (če sta ista).
- this uporabi implicitni parameter ( v zgornjem primeru = p1 )
- object je parameter, ki je bil podan ( p2 )
- metoda distance
public double distance(Point1 p) { double dx = this.x - p.x; double dy = this.y - p.y; return Math.sqrt(dx*dx+dy*dy); }
Uporaba:
q.distance(p);
- this uporabi implicitni parameter ( v zgornjem primeru = q )
- p je parameter, ki je bil podan
Dedovanje
razred podeduje atribute in metode drugega razreda
- osnovni razred (ang. base class) : izpeljan razred (ang. derived class)
ali
- nadrazred (ang. superclass) – podrazred (ang. subclass)
ali
- starš (ang. parent class) – otrok (ang. child class)
Pogoji:
- osnovni razred obstaja
- ključna beseda extends
- deklariramo samo dodatne atribute in metode
- lahko redefiniramo obstoječe metode
- konstruktor podrazreda mora klicati konstruktor nadrazreda - super
Primer: razredi ColoredPoint, TestColoredPoint ...
Abstraktni razred
Splošen nadrazred, ki je osnova za izpeljavo različnih podrazredov
- ena ali več abstraktnih metod
- ne moremo generirati objektov tega razreda, le objekte podrazredov
Smisel: izpeljava različnih podrazredov na tej osnovi