Commit 537d65bd by Patryk Czarnik

Początek tematu klas

parent ecc3e7d9
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
...@@ -30,6 +30,13 @@ public class SwitchNaObiektach { ...@@ -30,6 +30,13 @@ public class SwitchNaObiektach {
case null -> System.out.println("Nie ma nic"); case null -> System.out.println("Nie ma nic");
default -> System.out.println("Nie wiem co to jest. Ale klasą jest " + jakisObiekt.getClass()); default -> System.out.println("Nie wiem co to jest. Ale klasą jest " + jakisObiekt.getClass());
} }
// w starym stylu byłoby tak:
if(jakisObiekt instanceof String) {
String s = (String) jakisObiekt;
if(s.startsWith("o")) System.out.println("To jest napis na o:" + s);
// ...
}
} }
} }
......
package p05_klasy_wstep;
public class Osoba {
}
package p05_klasy_wstep;
public class Program0 {
public static void main(String[] args) {
// sama deklaracja zmiennej nie tworzy jeszcze obiektu - to jest "niezainicjowana zmienna"
Osoba a;
// System.out.println(a);
// obiekt tworzy się za pomocą operatora new
a = new Osoba();
System.out.println(a);
// zazwyczaj deklarując zmienną od razu wpisuje się tam obiekt:
Osoba b = new Osoba();
System.out.println(b);
// do zmiennych typu obiektowego można też wpisać wartość null, co znaczy "tu nie ma żadnego obiektu"
Osoba nikt = null;
System.out.println(nikt);
System.out.println();
// każdy obiekt w Javie, nawet jeśli definicja klasy jest zupełnie pusta,
// posiada takie metody:
// info jakiej klasy jest obiekt
System.out.println(a.getClass());
// zamiana na postać tekstową
System.out.println(a.toString());
// metody związane z porównywaniem
// equals - czy obiekt jest równy obiektowi
System.out.println(a.equals(a));
System.out.println(a.equals(b));
// hashCode - liczba traktowana jako "skrót" obiektu
// hc muszą być równe jeśli obiekty są równe; dobrze by było, aby hc były różne dla różnych obiektów - ale tego w pełni się nie gwarantuje
System.out.println(a.hashCode());
System.out.println(b.hashCode());
// metody toString, equals, hashCode może przedefiniować autor danej klasy (i b.często się tak robi)
// metody wait i notify (w kilku wariantach) są związane z wielowątkowością i synchronizacją - nie teraz...
}
}
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