Commit 606162d6 by Patryk Czarnik

konstruktory

parent a12b99e8
package p10_klasy.v2;
public class Osoba {
// Zmienne definiowane wewnątrz klasy bez słowa static
// są to "pola" (field) / "atrybuty" (attribute) / "zmienne instancyjne" (instance variable)
// są to te dane, które pamięta w sobie każdy obiekt tej klasy.
String imie, nazwisko;
int wiek;
Osoba() {
}
Osoba(String imie, String nazwisko, int wiek) {
this.imie = imie;
this.nazwisko = nazwisko;
this.wiek = wiek;
}
// Metoda to jest czynność, którą potrafi wykonać obiekt danej klasy.
void przedstawSie() {
System.out.println("Nazywam się " + imie + " " + nazwisko + " i mam " + wiek + " lat.");
}
}
package p10_klasy.v2;
public class Program0 {
public static void main(String[] args) {
System.out.println("Początek programu");
// Dzięki temu, że mamy zdefiniowaną klasę Osoba,
// możemy deklarować zmienne tego typu i tworzyć obiekty tej klasy.
Osoba a = new Osoba();
Osoba b = new Osoba();
System.out.println(a);
System.out.println(b);
System.out.println();
// Każdy obiekt w Javie posiada kilka predefiniowanych metod:
System.out.println(a.getClass());
System.out.println(a.toString());
System.out.println(a.hashCode() + " , " + b.hashCode());
System.out.println(a.equals(a));
System.out.println(a.equals(b));
// i jeszcze metody zw. z synchronizacją wątków:
// wait, notify, notifyAll
// i niepubliczne metody clone oraz finalize, które twórca klasy może "upublicznić"
}
}
package p10_klasy.v2;
public class Program1 {
public static void main(String[] args) {
Osoba a = new Osoba();
Osoba b = new Osoba();
// Początkowe wartości pól: null, 0, false w zależności od typu.
System.out.println("Początkowe wartości pól: " + 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 ma swoje własne wartości pól
System.out.println("pola obiektu a: " + a.imie + " " + a.nazwisko + " " + a.wiek);
System.out.println("pola obiektu b: " + b.imie + " " + b.nazwisko + " " + b.wiek);
System.out.println();
System.out.println("Osoby się przedstawiają...");
a.przedstawSie();
b.przedstawSie();
}
}
package p10_klasy.v2;
public class TworzenieObiektow {
public static void main(String[] args) {
Osoba a = new Osoba();
// Gdy tworzymy obiekt za pomocą domyślnego konstruktora, to początkowo jest on niezainicjowany,
// tzn. w polach ma wpisane wartości null / 0 i może nam to przeszkadzać.
// Późniejsze wpisanie danych ma dwie wady:
// 1) zajmuje trochę miejsca w kodzie
a.imie = "Ala";
a.wiek = 30;
// 2) programista może łatwo przeoczyć jakieś pole i pozostawić obiekt nie w pełni zainicjowany
// W przypadku obiektów o znaczeniu technicznym (jak np. Scanner) taki brak inicjalizacji może do błędów
a.przedstawSie();
a.nazwisko = "Kowalska";
a.przedstawSie();
System.out.println();
// Aby mieć większą kontrolę nad procesem tworzenia obiektów, i by był on wygodniejszy,
// można w swojej klasie zdefiniować konstruktory.
Osoba b = new Osoba("Basia", "Malinowska", 40);
b.przedstawSie();
}
}
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