Dziedziczenie Java

0

Czytam sobie o dziedziczeniu i tam sa podane pewne przykłady ale wszystko toczy sie w jednym pakiecie.
Gdybym chciał rozszerzyć jakaś klasę z biblioteki javy ale takich klas o takiej samej nazwie jest wiele w całej bibliotece javy.
To muszę do nowej klasy importować tą klase która chce rozszerzyć i dopiero wtedy rozszerzać???
W książce tego nie pisze ani nie ma przykładu takiego ale tak sie domyslam. Niby skąd kompilator ma wiedzieć która klasę chce rozszerzyć.
Dobrze sie domyślam???

0

ale takich klas o takiej samej nazwie jest wiele w całej bibliotece javy

Nie przesadzajmy.

To muszę do nowej klasy importować tą klase

ZAWSZE jeśli chcesz gdzieś użyć jakiejś klasy to musisz ją importować.

0

ZAWSZE jeśli chcesz gdzieś użyć jakiejś klasy to musisz ją importować

Oki dzieki. Szkoda że tego nie powiedzieli w książce a to ważne jest.
Ale nie całkiem zawsze, gdy mamy ta klase we własnym pakiecie to nie musimy.

Nie przesadzajmy.

Np. zarówno pakiet java.util, jak i java.sql mają klasę Date.
Więc zdarza sie że w różnych pakietach są klasy o takich samych nazwach. A nawet gdybym chciał z jakiegoś pakietu rozszerzyć klase do swojego programu to też muszę zaimportować, bo kompilator niby skąd ma wiedziec.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

PYT.2 Gdy tworze nową klasę (A) na podstawie starej klasy (B). I w nowej klasie (A) bede uzywał jakiejś klasy (C) a wiem że w starej klasie (B) była importowana klasa (C) :

  • to w nowej klasie (A) też muszę importować klasę (C) ??
  • czy importy ze starej klasy tez przechodzą do nowej klasy??
0

Nie powiedzieli w książce pewnie dlatego że jak programujesz jakimś normalnym IDE a nie lodówką to importy dodaja sie automatycznie i zwykle nie musisz o nich w ogóle myśleć. Tylko jeśli nazwa jest konfliktująca (jak to Date czy np. List) to IDE pyta o którą klasę chodzi.

0

Podsumujmy:
Mam rozumieć że dziedziczeniu podczas rozszerzania klasy gdy nazwy nie są kolidujace kompilator IDE (np. eclipse, którego używam) sam sobie doda import a w przypadku kolidujących nazw zapyta o którą chodzi. Dobrze czaje??

==================================

PYT.2 Gdy tworze nową klasę (A) na podstawie starej klasy (B). I w nowej klasie (A) bede uzywał jakiejś klasy (C) a wiem że w starej klasie (B) była importowana klasa (C) :

  • to w nowej klasie (A) też muszę importować klasę (C) ??
  • czy importy ze starej klasy tez przechodzą do nowej klasy??
0

W każdym pliku importujesz wszystko co mu jest potrzebne. Nie ma znaczenia co importowały pliki które importujesz. Analiza jests przeprowadzana per plik więc plik musi zawierać kompletną informacje.

0

A mógłbyś odpowiedzieć na podsumowanie?? Oraz w pytaniu drugim pytam jak jest z importami w dziedziczeniu. Jeśli klasa A rozszerza klase B to czy importy klasy B przechodza do klasy A ??

1

Przykro mi ale musisz zacząć wreszcie używać mózgu i czytać ze zrozumieniem. Udzieliłem odpowiedzi na wszystkie twoje wątpliwości.

0

Napisałeś tak:

Nie ma znaczenia co importowały pliki które importujesz.

A mnie nie interesują pliki które importuje tylko pliki które dziedzicze. Zadałem proste pytanie na temat importów w dziedziczeniu:

Gdy tworze nową klasę (A) na podstawie starej klasy (B). I w nowej klasie (A) bede uzywał jakiejś klasy (C) a wiem że w starej klasie (B) była importowana klasa (C) :

  • to w nowej klasie (A) też muszę importować klasę (C) ??
  • czy importy ze starej klasy tez przechodzą do nowej klasy??

I na to pytanie nie odpowiedziałes.

0
golec2604 napisał(a):

Oraz w pytaniu drugim pytam jak jest z importami w dziedziczeniu. Jeśli klasa A rozszerza klase B to czy importy klasy B przechodza do klasy A ??

Plik źródłowy jako taki nie ma większego związku z klasami w nim zdefiniowanymi, tj. w jednym pliku możesz zdefiniować wiele klas (choć wg. konwencji zwykle jest jedna klasa w jednym pliku).
Importy robisz per plik źródłowy, a nie per klasa.
Zatem nie ma znaczenia w jakim pliku została zdefiniowana klasa i jakie importy były tam użyte. Ty musisz wskazać każdą użytą klasę (spoza pakietu i pakietu java.lang) używając pełnej nazwy lub ją sobie zaimportować.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0