Java

Iz E-študij, proste zakladnice študentskega znanja

Skoči na: navigacija, iskanje

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

  1. Shranimo izvorno kodo s končnico .java
  2. Prevedemo z ukazom javac imeprograma.java
  3. 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)
  • 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

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

Povezave

Jedrnat opis osnov Jave

Delujoča Java za Linux

Vzpostavljeno iz »http://www.e-studij.si/Java«
Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija

Tiskanje/izvoz
orodja