Commit daac1418 by Patryk Czarnik

referencje - początek

parent 204ef126
package p10_klasy.referencje;
public class Konto {
int numer;
int saldo;
Osoba wlasciciel;
public Konto(int numer, int saldo, Osoba wlasciciel) {
this.numer = numer;
this.saldo = saldo;
this.wlasciciel = wlasciciel;
}
Konto(int numer, Osoba wlasciciel) {
this(numer, 0, wlasciciel);
}
@Override
public String toString() {
return "Konto nr " + numer + ": " + saldo + " PLN , wł.: " + wlasciciel;
}
void wplata(int kwota) {
saldo += kwota;
}
void wyplata(int kwota) {
saldo -= kwota;
}
}
package p10_klasy.referencje;
public class Osoba {
// W klasie umieszczamy definicje zmiennych (pól) i metod.
// Definicje bez słowa static określają co będzie posiadać obiekt tej klasy.
// Zmienna w klasie to inaczej: pole (field), atrybut (attribute), zmienna instancyjna (instance variable).
// Każda osoba posiada imie, nazwisko i wiek.
String imie, nazwisko;
int wiek;
// konstruktor - fragment kodu, który wykona się, gdy w programie tworzony jest nowy obiekt (new)
// konstruktorów może być wiele, pod warunkiem, że różnią się liczbą lub typem parametrów
Osoba() {
// System.out.println("konstruktor bezargumentowy");
}
Osoba(String imie, String nazwisko, int wiek) {
// System.out.println("konstruktor 3-argumentowy");
// System.out.println("parametr imie = " + imie);
// do pola imie w obiekcie (this) wpisz wartość, która została przekazana w parametrze imie
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.");
}
boolean jestPelnoletnia() {
return wiek >= 18;
}
// Definiując metodę toString określamy w jaki sposób Java ma wypisywać obiekty tej klasy,
// np. gdy ktoś obiekt printuje za pomocą println.
public String toString() {
return imie + " " + nazwisko + " (" + wiek + " lat)";
}
}
package p10_klasy.referencje;
public class Referencje1 {
public static void main(String[] args) {
Osoba ala = new Osoba("Ala", "Kowalska", 30);
Osoba ola = new Osoba("Ola", "Malinowska", 30);
Konto a = new Konto(1, 1000, ala);
Konto b = new Konto(2, 2000, ola);
Konto c = b;
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("c: " + c);
System.out.println();
// b.wplata(48);
// System.out.println("a: " + a);
// System.out.println("b: " + b);
// System.out.println("c: " + c);
// System.out.println();
//
// b = a;
// System.out.println("a: " + a);
// System.out.println("b: " + b);
// System.out.println("c: " + c);
// System.out.println();
//
// c = b;
// System.out.println("a: " + a);
// System.out.println("b: " + b);
// System.out.println("c: " + c);
// System.out.println();
//
// a = null;
// System.out.println("a: " + a);
// System.out.println("b: " + b);
// System.out.println("c: " + c);
// System.out.println();
//
// c = b = a;
// System.out.println("a: " + a);
// System.out.println("b: " + b);
// System.out.println("c: " + c);
}
}
package p10_klasy.referencje;
public class Referencje2 {
static void metoda(Konto a, Konto b, int x) {
System.out.println("Początek metody:");
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("x: " + x);
System.out.println();
// zmiana wartości parametru typu prostego zawsze jest lokalna, nie wpływa na wartości zmiennych w miejscu wywołania (w main)
// x += 55;
// zmiana wewnątrz obiektu jest trwała, może być widoczna z zewnątz (z main, z innej funkcji, z innego wątku, ...)
// b.wplata(48);
// przypisanie innego obiektu do parametru typu obiektowego
// (technicznie rzecz biorąc: wpisanie innego adresu)
// nie jest widoczne z zewnątrz
// a = b;
System.out.println("Koniec metody:");
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("x: " + x);
System.out.println();
}
public static void main(String[] args) {
Osoba ala = new Osoba("Ala", "Kowalska", 30);
Osoba ola = new Osoba("Ola", "Malinowska", 30);
Konto a = new Konto(1, 1000, ala);
Konto b = new Konto(2, 2000, ola);
int x = 5000;
System.out.println("Początek main:");
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("x: " + x);
System.out.println();
metoda(a, b, x);
System.out.println("Koniec main:");
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("x: " + x);
}
}
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