Hierarchia nazw klas w pakietach

0

Witam wlasnie zdalem sobie sprawe ze w calym toku nauki Javy przeoczylem podstawowa rzecz. Teraz uzupelnie swoje braki. Tak wiec, istnieje predefiniowana klasa Polygon. Teraz zalozmy ze chcialbym w moim pakiecie (ktory nazywa sie "test"), utworzyc wlasna klase wielokata. Zrobilem tak:

class MyPolygon extends Polygon {}

Ale pisanie w innych czesciach programu wszedzie nazw MyPolygon jest uciazliwe. Postanowielm ze zrobie takie cos:

class Polygon extends java.awt.Polygon {}

I teraz pytanie - co bedzie sie dzialo w pozostałych czesciach kodu? Jezeli w innej klasie zrobie tak:

Polygon pol = new Polygon();

to to bedzie klasa Polygon moja czy predefiniowana?
A jesli moja, to jak mam sie odwolywac do klasy predefinowanej? Za kazdym razem pisac pelna nazwe klasy ("java.awt.Polygon")?

0

IDE takie jak eclipse czy netbeans udostępni dwie możliwości: zaimportowania klasy Polygon z pakietu java.awt lub z Twojego pakietu. Możesz też nie importować żadnej z klas i używać pełnej ścieżki do klasy. Jeżeli chcesz użyć dwóch klas o takiej samej nazwie, ale z innych pakietów, to wtedy do jednej z klas musisz podać pełną ścieżkę, inaczej dostaniesz błąd o kolizji importów (tak samo jest w C#, z tym że można użyć swojej własnej nazwy dla ścieżki, nie wiem czy jest to dostępne w Javie).

0

Wszystko zależy od tego w której części kodu użyjesz konstrukcji new Polygon(). Jeżeli użyjesz w tym samym pakiecie co definicja twojej klasy to użyta będzie twoja klasa - kompilator nie znajdzie importów zatem poszuka w aktualnym pakiecie.
W innych częściach kodu będziesz musiał zaimportować konkretną wersje klasy. Jej niezaimportowana wersja będzie zawsze dostępna za pomocą pełnej nazwy pakiet.nazw.Klasy

0

Mozesz mi wierzyc, ze wiecej problemow bedziesz mial (przy kodzeniu, i przede wszystkim czytaniu kodu) z wlasnym Polygon niz z tym znacznie dluzszym MyPolygon. Ja bym jednak zagryzl warge i za kazdym razem doklepal te 2 literki. No, ale fakt, ze przy 50 uzyciach to juz 100 dodatkowych literek...

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