Co to jest Upcasting i Downcasting w Javie? Proste wyjaśnienie

Opublikowany: 2021-01-22

Spis treści

Upcasting i Downcasting w Javie

Rzutowanie typów w Javie odnosi się do procedury, która obejmuje konwersję jednego typu danych na inny. Można to zrobić zarówno automatycznie, jak i ręcznie. Podczas gdy programista musi samodzielnie wykonać ręczną konwersję, kompilator jest używany do procesu automatycznego. Downcasting i upcasting to zasadniczo dwa typy rzutowania typów obiektów.

Obiekty potomne i nadrzędne to dwa różne typy obiektów. Teraz istnieją dwa sposoby, za pomocą których można zainicjować obiekty, a następnie dziedzicząc również właściwości, które posiadają klasy potomne i nadrzędne. Te sposoby obejmują:

  • Child c = new Child(): Dostęp do wszystkich członków należących do klas podrzędnych i rodzicielskich
  • Parent p = new Child(): uzyskuje dostęp tylko do członków klasy nadrzędnej, a także do metod, które zostały nadpisane w klasie podrzędnej

Zasadniczo rzutowanie typu Parent to Child jest znane jako Upcasting, podczas gdy rzutowanie typu Child to Parent jest określane jako Downcasting.

System rzutowania typów jest używany, aby upewnić się, że zmienne są przetwarzane przez funkcję dokładnie lub nie. Chociaż downcasting nie jest możliwy niejawnie, można wykonać upcasting zarówno jawnie, jak i niejawnie.

Zarówno downcasting, jak i upcasting są ważnymi elementami Javy i umożliwiają tworzenie złożonych programów przy użyciu prostej składni. Mają też wielkie zalety, takie jak grupowanie różnych obiektów lub polimorfizm.

Ucz się kursów rozwoju oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Wyrzucanie

W upcastingu obiekt potomny jest rzutowaniem typu na obiekt klasy rodzica. Dzięki temu procesowi ludzie mogą z łatwością uzyskać dostęp do wyróżnionych metod i zmiennych klasy rodzic-dziecko. W procesie wymagany jest dostęp tylko do niektórych określonych metod i zmiennych klasy potomnej, takich jak metody nadpisane. W wielu przypadkach upcasting jest również nazywany poszerzaniem i uogólnianiem. Upcasting może być przeprowadzany niejawnie i zapewnia ludziom elastyczność dostępu do członków klasy nadrzędnej.

Poniższy przykład może pomóc w lepszym zrozumieniu procesu.

Przykład: Istnieje klasa zwierząt, która obejmuje różne klasy zwierząt, a jedną z nich są ryby. Zakładając, że klasa zwierząt jest rozszerzona o klasę ryb, byłyby dwa sposoby dziedziczenia. Dziedziczenie jest jednym z kluczowych aspektów programowania obiektowego lub OOP, który pozwala jednej klasie dziedziczyć cechy innej klasy. Oznacza to klasę pochodną, ​​która jest nadzbiorem klasy bazowej. Tutaj może być więcej metod niż klasa podstawowa. Podczas upcastu jedyną rzeczą, która może się zdarzyć z interfejsem klasy, jest to, że może on stracić metody, a nie je zyskać. W rezultacie kompilator umożliwia upcasting bez żadnych specjalnych notacji lub jawnych rzutów.

Kompozycja a dziedziczenie

Jeśli chodzi o programowanie obiektowe, istnieje duża szansa, że ​​można skończyć na tworzeniu i używaniu wykonanego przez zwykłe pakowanie metod i danych razem w klasie, a następnie korzystanie z obiektów obecnych w tej klasie. Ludzie mogą nawet używać niektórych istniejących klas do opracowywania nowych klas z kompozycją. Dziedziczenie jest stosowane stosunkowo rzadko. Podczas nauki OPP, mimo że dziedziczenie jest bardzo skupione, ważne jest, aby programiści znali jego prawidłowe użycie i nie próbowali używać go po prostu tam, gdzie mogą.

W rzeczywistości należy go używać dość rzadko, tylko w scenariuszach, w których dziedziczenie okazuje się rzeczywiście przydatne. Jednym z najprostszych sposobów określenia, czy dana osoba powinna używać dziedziczenia lub kompozycji, jest zadawanie sobie pytania, czy musi zmienić obsadę z nowej obsady na obsadę podstawową. W przypadku, gdyby upcasting był koniecznością, należałoby skorzystać z dziedziczenia. Jeśli jednak nie jest to wymóg, to trzeba dalej zastanowić się nad potrzebą dziedziczenia.

Obniżanie

Rzutowanie w dół jest inną formą rzutowania typu obiektu i jest używane do wyznaczania obiektu odniesienia podklasy do klasy nadrzędnej, co nie jest dozwolone w Javie. Przygnębienie nie jest zbyt trudne do zrozumienia. Na przykład, jeśli istnieje klasa bazowa i klasa, która pośrednio lub pośrednio pochodzi z klasy bazowej, to za każdym razem, gdy obiekt typu klasy bazowej przechodzi do rzutowania typu do klasy pochodnej, jest to określane jako odrzucenie. W konsekwencji, zgodnie z rzutowaniem w dół, można przejść w dół diagramu dziedziczenia, starając się wziąć obiekt klasy bazowej, a następnie przekonwertować go na typ klasy pochodnej. Należy jednak pamiętać, że w oparciu o pisany kod, downcasting może, ale nie musi mieć sensu.

Kiedy ludzie stosują system downcastingu, nie natkną się na żaden rodzaj błędu kompilatora. Jednak napotkaliby java.lang.ClassCastException, który jest wyjątkiem w czasie wykonywania. Więc teraz pojawia się pytanie, jeśli downcasting nie jest możliwy w Javie, to dlaczego ludzie to robią? Mówiąc najprościej, downcasting może być używany tylko w określonych sytuacjach, gdy obiekt, do którego odwołuje się klasa nadrzędna, należy do podklasy.

Rzutowanie w dół może być niezwykle przydatne przy porównywaniu jednego obiektu z drugim.

Aby sprawdzić, czy downcasting jest prawidłowy, czy nie, można uruchomić

System getClass() umożliwia programistom zrozumienie klasy przekazywanego obiektu, a następnie porównanie jej z klasą bieżącą. W przypadku, gdy nie są równe, downcasting nie będzie ważny i wypróbowanie tego procesu będzie bezcelowe. Koncepcja downcastingu polega głównie na rzucaniu supertypów na podtypy. Taki proces odlewania odbywa się zwykle w sposób jawny. Zasadniczo oznacza to, że typy o większych rozmiarach są tworzone tak, aby wyraźnie pasowały do ​​typów o mniejszych rozmiarach.

Upcasting vs Downcasting

Upcasting i. Downcasting ma pewne bardzo szczególne różnice. Niektóre z nich zostały krótko podkreślone w poniższych wskazówkach:

  • W Upcasting obiekt podrzędny jest rzutowany na obiekt nadrzędny. Z drugiej strony odwołanie do obiektu klasy nadrzędnej kończy się przekazywaniem do klasy potomnej, gdy dochodzi do downcastingu.
  • Ludzie mogą wykonywać upcasting zarówno jawnie, jak i niejawnie, podczas gdy downcasting może być wykonywany tylko jawnie.
  • W przypadku upcastingu ludzie mogą uzyskać dostęp do zmiennych i metod klasy nadrzędnej w klasie potomnej, ale nie na odwrót. Jednak przy downcastingu zmienne i metody obu klas są łatwo dostępne.
  • Upcasting umożliwia dostęp tylko do określonych metod klasy podrzędnej. Zarówno podczas wykonywania rzutowania w dół, wszystkie metody i zmienne należące do obu klas są dostępne.

Wniosek

Upcasting jest rzadko używany w Javie. W większości przypadków ludzie używają go, gdy muszą opracować kod, który dotyczy tylko klasy nadrzędnej. Jeśli chodzi o tworzenie kodu, który zapewnia dostęp do zachowania klasy potomnej, zwykle stosuje się downcasting.

Jeśli chcesz nauczyć się języka Java i zdobyć certyfikat w zakresie przetwarzania w chmurze, uaktualnij oferuje Zaawansowany Program Certyfikatów w Cloud Computing . 7,5-miesięczny kurs online jest przeznaczony specjalnie dla pracujących profesjonalistów, aby pomóc im wejść w role związane z przetwarzaniem w chmurze.

Zostań programistą Full Stack

APLIKUJ TERAZ O MISTRZA NAUKI KOMPUTEROWEJ Z LIVERPOOL JOHN MOORES