Java 8 #2: wyrażenia lambda i interfejs funkcyjny

lambda expression

Wyrażenie lambda Wyrażenia lambda (ang. lambda expression) są próbą zaimplementowania koncepcji związanych z programowaniem funkcyjnych* w pełni obiektowym języku jakim jest Java. Koncept ten jest bardzo stary, o czym możesz się przekonać czytając chociażby blog Martina Fowlera**. Dotychczas w Javie pewną brzydką alternatywą dla wyrażeń lambda były klasy anonimowe. Sam przyznasz jednak, że nie są … Dowiedz się więcej

Java #28: instanceof operator

java instanceof

Słowo kluczowe instanceof Ta lekcja jest kontynuacją poprzedniej lekcji o interfejsach. Wkrótce zobaczysz, że interfejsy są używane bardzo często w języku Java. Najważniejsze jest zrozumienie, że interfejs to taka foremka, którą później trzeba wypełnić, ale póki jej nie użyjesz do końca nie wiesz, co w niej jest. I tu pojawia się problem. Przeanalizuj wpierw poniższy … Dowiedz się więcej

Java #27: implementacja interfejsu

java interface

Implementacja interfejsu w programowaniu Pewnie już znasz pojęcie interfejs, które często występuje jako interfejs graficzny. Wtedy można go rozumieć, jako sposób w jakim użytkownik komunikuje się z komputerem (z reguły są to różnego rodzaju buttony, linki, combo boxy, itp.). Interfejs (czy też po angielsku: interface) o którym dziś mowa, jest sposobem w jaki jedna klasa … Dowiedz się więcej

Java #22: słowo kluczowe final

java final class

Wiesz już czym jest dziedziczenie oraz polimorfizm. Znasz także klasę abstrakcyjną, która musi rozszerzać inną, aby zostać użyta. Czasami jednak będziesz chcieć uniknąć rozszerzania jednej klasy przez drugą. Powodów może być wiele, a jednym z nich jest uproszczenie architektury kodu poprzez wykorzystanie słowa final. Słowo kluczowe final może być użyte przed nazwą klasy, metody, pola, … Dowiedz się więcej

Java #21: przeciążanie metod

java overload vs override

W poprzedniej lekcji pisałem o tym jak przesłaniać metody za pomocą dziedziczenia i adnotacji @Override. Teraz dowiesz się, jaka jest różnica między przesłanianiem (ang. override) a przeciążaniem (ang. overload) metody. Nie jest to wbrew pozorom to samo i często przeciążanie metod jest mylnie utożsamiane jako synonim przesłaniania. Przypatrz się klasom Worker i Lawyer. Teraz napiszę klasę Lawyer dziedziczącą … Dowiedz się więcej

Java #20: adnotacja override, przesłanianie metod

java overriding

Czym są adnotacje? W dzisiejszej lekcji poznasz swoją pierwszą adnotację, którą to będzie adnotacja override. Adnotacje tak jak obiekty są typami referencyjnymi. Nie będę wnikał w jaki sposób się je tworzy, bo jest to wiedza zaawansowana, na dzień dzisiejszy kompletnie Ci nieprzydatna. Adnotacje w Javie możesz traktować jak swego rodzaju specjalne parametry, które nie wpływają w … Dowiedz się więcej

Java #19: polimorfizm i słowo kluczowe this

java polymorphism

Co oznacza polimorfizm? Zagadnienie, które dziś poznasz to polimorfizm. Po pierwszym wymówieniu tego słowa pewnie zastanawiasz się kto wpadł na taki pomysł, aby używać w programowaniu słowa, którego znaczenia nikt nie zna. Podejrzewam też, że nigdy wcześniej nie udało Ci się natknąć na to określenie. Opowiem Ci, że ja byłem chyba wyjątkiem w tej kwestii, … Dowiedz się więcej

Java #18: klasy abstrakcyjne

java abstract class

Znasz już podstawy programowania strukturalnego oraz podstawowe algorytmy. Teraz czas przejść do bardziej skomplikowanych paradygmatów programowania obiektowego. Klasy abstrakcyjne są (abstrakcja) jednym z paradygmatów programowania obiektowego. Można ją wytłumaczyć jak stosowanie równań matematycznych w fizyce. Matematyczne obliczenia to pewnego rodzaju abstrakcja, która później przy podstawieniu odpowiednich wartości wylicza odpowiednie właściwości, które obserwujesz w przyrodzie. Klasy … Dowiedz się więcej