Commit 3bc324d7 by Patryk Czarnik

Student i extends

parent aec5f9e4
package p10_klasy.v4;
public class Dziedziczenie1 {
public static void main(String[] args) {
// Osoba to jest nadklasa (superclass)
// Student to jest podklasa (subclass)
// Klasa Student dziedziczy z klasy Osoba / rozszerza klasę Osoba
// Klasa Student jest specjalizacją klasy Osoba
// a klasa Osoba jest generalizacją klasy Student
Osoba osoba = new Osoba();
System.out.println("Osoba: " + osoba);
Student student = new Student();
System.out.println("Student: " + student);
System.out.println();
// Obiekt klasy Osoba posiada tylko te pola i metody, które są zdefiniowane w klasie Osoba (lub Object ;) )
osoba.imie = "Ala";
osoba.nazwisko = "Kowalska";
osoba.wiek = 40;
System.out.println(osoba.jestPelnoletnia());
osoba.przedstawSie();
// Ale w obiekcie Osoba nie ma pól ani metod z klasy Student
// osoba.kierunek = "medycyna";
// osoba.dodajOcene(4);
System.out.println();
// Obiekt klasy Student posiada wszystkie pola i metody zdefiniowane w klasie Osoba
student.imie = "Jan";
student.nazwisko = "Kowalski";
student.wiek = 20;
System.out.println(student.jestPelnoletnia());
// ale dodatkowo posiada pola i metody zdefiniowane w klasie Student.
student.kierunek = "geologia";
student.rok = 1;
student.dodajOcene(4);
student.dodajOcene(4);
student.dodajOcene(5);
System.out.println(student.sredniaOcen());
student.przedstawSie();
System.out.println();
// Student nie tylko posiada wszystkie pola i metody odziedziczone z Osoby,
// ale także "JEST" Osobą.
// Zasada podstawiania: wszędzie tam, gdzie oczekiwana jest wartość typu Osoba,
// można użyć obiektu klasy Student.
Sklep monopolowy = new Sklep("Procent", 3);
monopolowy.sprzedajPiwo(osoba, 10);
// Student może kupić piwo
monopolowy.sprzedajPiwo(student, 3);
// Student może być właścicielem konta
Konto konto = new Konto(1, 3000, student);
System.out.println(konto);
System.out.println();
}
}
package p10_klasy.v4;
class Konto {
int numer;
int saldo;
Osoba wlasciciel;
Konto(int numer, int saldo, Osoba wlasciciel) {
this.numer = numer;
this.saldo = saldo;
this.wlasciciel = wlasciciel;
}
@Override
public String toString() {
return "Konto{" +
"numer=" + numer +
", saldo=" + saldo +
", wlasciciel=" + wlasciciel +
'}';
}
public void wplata(int kwota) {
saldo += kwota;
}
public void wyplata(int kwota) {
saldo -= kwota;
}
}
package p10_klasy.v4;
class Osoba {
static final int WIEK_PELNOLETNIOSCI = 18;
String imie, nazwisko;
int wiek;
{ // blok inicjalizacyjny - fragment kodu, który wykona się jeszcze przed konstruktorem podczas tworzenia każdego obiektu
System.out.println("Powstaje obiekt Osoba");
}
Osoba() {
}
Osoba(String imie, String nazwisko, int wiek) {
this.imie = imie;
this.nazwisko = nazwisko;
this.wiek = wiek;
}
boolean jestPelnoletnia() {
return wiek >= WIEK_PELNOLETNIOSCI;
}
void przedstawSie() {
System.out.println("Nazywam się " + imie + " " + nazwisko + " i mam " + wiek + " lat.");
}
public String toString() {
return imie + " " + nazwisko + " (" + wiek + " lat)";
}
}
package p10_klasy.v4;
class Sklep {
String nazwa;
int cenaPiwa;
int utarg = 0;
Sklep(String nazwa, int cenaPiwa) {
this.nazwa = nazwa;
this.cenaPiwa = cenaPiwa;
}
void sprzedajPiwo(Osoba klient, int ileSztuk) {
System.out.println("----------------");
System.out.println("Witamy w sklepie " + nazwa);
System.out.println("Kliencie, przedstaw się.");
// obiekt sklep wywołuje na obiekcie klient metodę
klient.przedstawSie();
if(klient.jestPelnoletnia()) {
int doZaplaty = cenaPiwa * ileSztuk;
System.out.println(klient.imie + ", możesz kupić piwo, za " + ileSztuk + " szt płacisz " + doZaplaty + ".");
utarg += doZaplaty;
} else {
System.out.println(klient.imie + ", nie możesz kupić piwa, bo masz tylko " + klient.wiek + " lat.");
}
System.out.println("^^^^^^^^^^^^^^^^");
}
}
package p10_klasy.v4;
import java.util.ArrayList;
import java.util.List;
class Student extends Osoba {
String kierunek;
int rok;
List<Integer> oceny = new ArrayList<>();
void dodajOcene(int ocena) {
oceny.add(ocena);
}
double sredniaOcen() {
return oceny.stream().mapToInt(Integer::intValue).average().orElse(0.0);
}
}
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