Commit 426ff999 by Patryk Czarnik

bloki inicjalizacyjne

parent c85def11
......@@ -19,22 +19,33 @@ public class Osoba {
// w pamięci istnieje jeden egzemplarz tej zmiennej
static final int WIEK_PELNOLETNIOSCI = 18;
static int liczbaObiektow = 0;
private static int liczbaObiektow = 0;
// konstruktor to taka specjalna metoda, która jest wykonywana
// podczas tworzenia nowego obiektu
Osoba() {
liczbaObiektow++;
}
Osoba(String imie, String nazwisko, int wiek) {
liczbaObiektow++;
this.imie = imie;
this.nazwisko = nazwisko;
this.wiek = wiek;
}
// blok inicjalizacyjny to fragment kodu wykonywany podczas
// tworzenia każdego obiektu jeszcze przed konstruktorem
{
System.out.println("init Osoba");
liczbaObiektow++;
}
// statyczny blok inicjalizacyjny jest wykonywany raz dla danej klasy
// gdy ta klasa jest ładowana do JVM
static {
System.out.println("static Osoba");
}
// metoda instancyjna (czyli bez słowa static) będzie uruchamiana na konkretnych obiektach
// i ma dostęp do pól tego obiektu
void przedstawSie() {
......@@ -53,4 +64,8 @@ public class Osoba {
return wiek >= WIEK_PELNOLETNIOSCI;
}
static int liczbaObiektow() {
return liczbaObiektow;
}
}
......@@ -3,6 +3,8 @@ package p05_klasy_wstep;
public class Program2_Tworzenie {
public static void main(String[] args) {
System.out.println("Początek programu");
System.out.println("Osoba pełnoletnia ma " + Osoba.WIEK_PELNOLETNIOSCI + " lat.");
// Tworząc obiekt "zainicjowany nullami" i dopiero później wpisując wartości pól
Osoba a = new Osoba();
a.imie = "Ala";
......@@ -17,6 +19,6 @@ public class Program2_Tworzenie {
Osoba b = new Osoba("Ola", "Malinowska", 40);
b.przedstawSie();
System.out.println("Liczba obiektów: " + Osoba.liczbaObiektow);
System.out.println("Liczba obiektów: " + Osoba.liczbaObiektow());
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment