Klasy Klasa to grupa obiektów, które mają wspólne właściwości, a obiekt jest instancją klasy. Klasa w języku Java może zawierać: pola - reprezentują stan obiektu (odniesienie do pola z kropką), methods - definiuje interakcję obiektu ze światem zewnętrznym (odwołanie do metody z kropką), konstruktory (niektóre specjalne metody), bloki, zagnieżdżone klasy i interfejsy. Jak wiemy, zmienna, która jest tworzona wewnątrz klasy, ale poza jej metodą, jest znana jako zmienna instancji. Zmienna instancji nie zajmuje pamięci podczas kompilacji. Zajmuje pamięć w czasie wykonywania programu, gdy tworzony jest obiekt lub instancja. Słowo kluczowe new służy do alokacji pamięci w środowisku wykonawczym. Wszystkie obiekty mają przydzielaną pamięć na stercie. dr Anna Łazińska, WMiI UŁ Podstawy języka Java https://www.javatpoint.com 1 / 13
Modyfikatory dostępu W Javie mamy 4 modyfikatory dostępu: 1 private - dostępność tylko w klasie; 2 default - jeśli nie używamy żadnego modyfikatora, traktowany jest on jako domyślny ; modyfikator domyślny daję dostępność tylko w pakiecie; 3 protected - dostępność w pakiecie i poza pakietem, ale tylko przez dziedziczenie; 4 public - dostępność wszędzie. Klasa nie może być prywatna ani chroniona z wyjątkiem klas zagnieżdż dr Anna Łazińska, WMiI UŁ Podstawy języka Java https://www.javatpoint.com 2 / 13
W praktyce tworzymy różne klasy w osobnych plikach (w odpowiednich pakietach). Jedna z klas projektu musi mieć metodę main(). Przykład: Student.java package mainstudent; class Student { //określenie pól String imie; String nazwisko; int ects; MainStudent.java package mainstudent; public class MainStudent { public static void main(string[] args) { Student s= new Student(); // zainicjowanie obiektu //przez zmienna referencyjna s.imie="adam"; s.nazwisko="winter"; s.ects=62; System.out.println(s.imie+" "+ s.nazwisko+", ECTS: "+s.ects); dr Anna Łazińska, WMiI UŁ Podstawy języka Java https://www.javatpoint.com 3 / 13
Student.java package mainstudent; class Student { private String imie; private String nazwisko; private int ects; void insertstudent(string nam, String sur, int e){ imie=nam; nazwisko=sur; ects=e; void printdata(){ System.out.println(imie+" "+nazwisko+", ECTS: "+ects); Inicjowanie poprzez metodę MainStudent.java package mainstudent; public class MainStudent { public static void main(string[] args) { Student s= new Student(); s.insertstudent("maria", "Summer", 81); s.printdata(); dr Anna Łazińska, WMiI UŁ Podstawy języka Java https://www.javatpoint.com 4 / 13
Konstruktory W języku Java konstruktor jest blokiem kodu podobnym do metody. Jest wywoływana, gdy instancja obiektu jest tworzona, a pamięć jest przydzielana dla obiektu. Jest to specjalny typ metody, który służy do inicjalizacji obiektu. Za każdym razem, gdy obiekt jest tworzony przy użyciu słowa kluczowego new, wywoływany jest co najmniej jeden konstruktor. Nie trzeba pisać konstruktora dla klasy. Jest tak, ponieważ kompilator java tworzy domyślny konstruktor, jeśli klasa go nie posiada. Nazwa konstruktora musi być taka sama, jak nazwa klasy. Blok konstruktora może być pusty. Wtedy pola obiektu mają wartości domyślne. Konstruktor nie może mieć wyraźnego typu zwracanego. Konstruktor Java nie może być abstract, static, final ani synchronized. dr Anna Łazińska, WMiI UŁ Podstawy języka Java https://www.javatpoint.com 5 / 13
Konstruktor domyślny Domyślny konstruktor służy do nadania wartości domyślnych dla obiektu, takich jak 0, null itd., w zależności od typu. class Student { private String imie; private String nazwisko; private int ects; class Student { private String imie; private String nazwisko; private int ects; Student(){ // konstruktor domyslny Student(){ //z wartosciami poczatkowymi // konstruktor domyslny imie="ole"; //pusty blok nazwisko="lion"; ects=10; Wtedy możemy utworzyć instancję obiektu: Student s=new Student(); dr Anna Łazińska, WMiI UŁ Podstawy języka Java https://www.javatpoint.com 6 / 13
Konstruktor z parametrami Konstruktor o określonej liczbie parametrów nazywany jest sparametryzowanym konstruktorem. Sparametryzowany konstruktor służy do dostarczania różnych wartości różnym obiektom. Możemy jednak podawać również te same wartości. class Student { private String imie, nazwisko; private int ects; Student(String nam, String sur, int e){ imie=nam; nazwisko=sur; ects=e; Wtedy możemy utworzyć instancje obiektów: Student s1=new Student("Anna", "Pol", 43); Student s2=new Student("Adam", "West", 64); dr Anna Łazińska, WMiI UŁ Podstawy języka Java https://www.javatpoint.com 7 / 13
Możliwe użycie słowa this Słowa kluczowego this można użyć do wskazania bieżącej zmiennej instancji klasy. W poprzednim przykładzie zmienne lokalne (formalne argumenty) i zmienne instancji były różne. Jeśłi chcemy używać tych samych parametrów (formalnych argumentów) i zmiennych instancji, używamy słowa this do ich rozróżnienia. class Student { private String imie, nazwisko; private int ects; Student(String imie, String nazwisko, int ects){ this.imie=imie; this.nazwisko=nazwisko; this.ects=ects; dr Anna Łazińska, WMiI UŁ Podstawy języka Java https://www.javatpoint.com 8 / 13
Przeciążanie konstruktora W języku Java konstruktor jest podobny do metody, ale bez typu zwracanego. Może być również przeciążony, podobnie jak metody Java. Przeciążanie konstruktorów w Javie to technika posiadania więcej niż jednego konstruktora z różnymi listami parametrów. Są one ułożone w taki sposób, że każdy konstruktor wykonuje inne zadanie. Są one różnicowane przez kompilator pod względem liczby parametrów na liście i ich typów. dr Anna Łazińska, WMiI UŁ Podstawy języka Java https://www.javatpoint.com 9 / 13
Obiekt anonimowy Anonimowy oznacza po prostu bezimienny. Obiekt, który nie ma referencji, jest znany jako obiekt anonimowy. Może być używany tylko w momencie tworzenia obiektu. Jeśli musimy użyć obiektu tylko jeden raz, anonimowy obiekt jest dobrym rozwiązaniem. Test.java Me.java public class Me { public Me() { System.out.println("=========="); System.out.println("Made by XXX"); System.out.println("==========="); class Test{ public static void main(string[] args) { //blok kodu new Me(); //obiekt anonimowy //klasy Me Możliwe jest także wywoływanie metody poprzez obiekt anonimowy, np. new A.print(); dr Anna Łazińska, WMiI UŁ Podstawy języka Java https://www.javatpoint.com 10 / 13
Zadania Zadanie 1. Utworzyć klasę Prostokat, która przechowuje dane o prostokącie (wysokość, szerokość) oraz ma metody zwracające pole i obwód. Napisać odpowiednie konstruktory. Przetestować klasę, tworząc obiekty, obiekty anonimowe i wywołując metody. dr Anna Łazińska, WMiI UŁ Podstawy języka Java https://www.javatpoint.com 11 / 13
Zadania Zadanie 2. Utworzyć klasę Pattern tak, aby mógł być wykonany poniższy kod: Pattern p1 = new Pattern(); Pattern p2 = new Pattern( o, $,5); System.out.println(p1.giveDescription()); p1.print(); System.out.println(p2.giveDescription()); p2.print(); p1.changedata( -, +,7); p1.print(); Oczekiwany efekt: Pattern 1: 1 x (?,?).?? Pattern 2: 5 x (o,$). o$o$o$o$o$ -+-+-+-+-+-+-+ dr Anna Łazińska, WMiI UŁ Podstawy języka Java https://www.javatpoint.com 12 / 13
Zadania Zadanie 3. Napisać program zarządzający kontami bankowymi danego właściciela. Pomyśleć o odpowiednich polach i metodach. Przetestować program. dr Anna Łazińska, WMiI UŁ Podstawy języka Java https://www.javatpoint.com 13 / 13