Commit 5ace2f62 by Patryk Czarnik

klasy v1 - pola i metody

parent 701f2566
......@@ -7,5 +7,16 @@ public class Osoba {
String imie, nazwisko;
int wiek;
// Metoda to czynność, którą "potrafi wykonać obiekt".
// nie piszemy już "static"
// Wewnątrz metody można odwoływać się do pól należących do obiektu.
// Te odwołania można poprzedzać this ("ten obiekt, w którym jesteśmy), ale w Javie nie trzeba tego robić.
void przedstawSie() {
System.out.println("Nazywam się " + imie + " " + nazwisko + " i mam " + wiek + " lat.");
}
boolean pelnoletnia() {
return wiek >= 18;
}
}
......@@ -21,10 +21,22 @@ public class Przyklad1 {
System.out.println("Ustawione wartości pól:");
System.out.println("a: " + a.imie + " " + a.nazwisko + " " + a.wiek);
System.out.println("b: " + b.imie + " " + b.nazwisko + " " + b.wiek);
System.out.println();
// wywołanie metody na obiekcie
a.przedstawSie();
b.przedstawSie();
System.out.println();
a.wiek++;
System.out.println("a: " + a.imie + " " + a.nazwisko + " " + a.wiek);
System.out.println("b: " + b.imie + " " + b.nazwisko + " " + b.wiek);
a.przedstawSie();
b.przedstawSie();
if(a.pelnoletnia()) {
System.out.println(a.imie + " jest pełnoletnia");
} else {
System.out.println("ALARM");
}
// Obiektów w Javie nie usuwa się w sposób jawny - robi to "garbage collector" gdy zauważa,
// że do obiektu nie ma już dostępu (nie ma możliwości użycia)
......
package p11_klasy.podstawy_v1;
public class Osoba {
// Zmienna deklarowana na poziomie klasy to jest:
// pole (field), atrybut (attribute), zmienna instancyjna (instance variable)
// Każdy obiekt tej klasy zawiera pola (które nie są statyczne).
String imie, nazwisko;
int wiek;
// Metoda to czynność, którą "potrafi wykonać obiekt".
// nie piszemy już "static"
// Wewnątrz metody można odwoływać się do pól należących do obiektu.
// Te odwołania można poprzedzać this ("ten obiekt, w którym jesteśmy), ale w Javie nie trzeba tego robić.
void przedstawSie() {
System.out.println("Nazywam się " + imie + " " + nazwisko + " i mam " + wiek + " lat.");
}
boolean pelnoletnia() {
return wiek >= 18;
}
}
package p11_klasy.podstawy_v1;
public class Przyklad0 {
public static void main(String[] args) {
// Dzięki temu, że istnieje klasa Osoba, możemy zadeklarować zmienną typu Osoba.
Osoba o;
// ale uwaga - w Javie sama deklaracja zmiennej nie tworzy obiektu
// System.out.println(o); - błąd kompilacji - niezainicjowana zmienna
// można też utworzyć nowy obiekt klasy Osoba i wpisać go do zmiennej
o = new Osoba();
System.out.println(o);
// Najczęściej w jednej linii deklaruje się zmienną i wpisuje nowy obiekt:
Osoba p = new Osoba();
System.out.println(p);
// Każdy obiekt w języku Java (nawet zupełnie pustej klasy)
// posiada pewne metody, które można uruchomić.
// toString - zwraca tekstową postać obiektu
String s = o.toString();
System.out.println(s);
// getClass - zwraca "obiekt klasy" z informacjami nt klasy, do której należy obiekt
System.out.println(o.getClass());
Class<?> klasa = o.getClass();
System.out.println("pakiet: " + klasa.getPackageName() + ", klasa " + klasa.getSimpleName());
// equals i hashCode związane z porównywaniem obiektów
System.out.println("hasz o : " + o.hashCode());
System.out.println("hasz p : " + p.hashCode());
if(o.equals(p)) {
System.out.println("obiekty równe");
} else {
System.out.println("obiekty nierówne");
}
// metody wait (z kilku wersjach) i notify - służą do synchronizacji wątków w aplikacjach wielowątkowych
// toString, equals, hashCode często są nadpisywane przez autorów klas.
}
}
package p11_klasy.podstawy_v1;
public class Przyklad1 {
public static void main(String[] args) {
Osoba a = new Osoba();
Osoba b = new Osoba();
System.out.println("Początkowe wartości pól:");
System.out.println(a.imie + " " + a.nazwisko + " " + a.wiek);
a.imie = "Ala";
a.nazwisko = "Kowalska";
a.wiek = 30;
b.imie = "Basia";
b.nazwisko = "Malinowska";
b.wiek = 40;
// Każdy obiekt posiada własne wartości pól.
System.out.println("Ustawione wartości pól:");
System.out.println("a: " + a.imie + " " + a.nazwisko + " " + a.wiek);
System.out.println("b: " + b.imie + " " + b.nazwisko + " " + b.wiek);
System.out.println();
// wywołanie metody na obiekcie
a.przedstawSie();
b.przedstawSie();
System.out.println();
a.wiek++;
a.przedstawSie();
b.przedstawSie();
if(a.pelnoletnia()) {
System.out.println(a.imie + " jest pełnoletnia");
} else {
System.out.println("ALARM");
}
// Obiektów w Javie nie usuwa się w sposób jawny - robi to "garbage collector" gdy zauważa,
// że do obiektu nie ma już dostępu (nie ma możliwości użycia)
// Dzieje się to asynchronicznie, czyli nie wiemy kiedy dokładnie.
}
}
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