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ć.

0

A mnie nie interesują pliki które importuje tylko pliki które dziedzicze.

To jakaś nowość chyba to dziedziczenie plików...

Zadałem proste pytanie na temat importów w dziedziczeniu:

A ja już dwa razy napisałem że NIE MA znaczenia czy dziedziczysz, czy po prostu używasz jakiejs klasy czy cokolwiek innego. Konieczność importu pozostaje.

I na to pytanie nie odpowiedziałes.

Odpowiedziałem, po prostu nie potrafisz czytać ze zrozumieniem.

0

Czy Wy nie potraficie powiedziec w prost na pytanie tylko jakieś wywody. Jak pytam o cos to odpowiadamy tylko na to. Wg. definicji z książki nowa klasa dziedziczy po starej a w nowej dopisujemy tylko nowe funkcje. Pytanie proste czy importy też są dziedziczone??
Czy ktoś na to potrafi odpowiedzieć konkretnie???!!!

0

@golec2604 co miałeś na myśli pisząc, że chcesz rozszerzyć jakaś klasę z biblioteki javy?

0

@golec2604 a czy importy są częścią klasy? Czy znajdują sie gdzieś w jej ciele? Pamiętaj że w jednym pliku klas może być kilka.

0

Po tym co Wy tu gadacie to mam rozumieć że importy sa tylko w pliku źródłowym danej klasy i służą tylko w czasie kompilacji do pliku.class a w samym pliku .class ich nie ma. Dobrze teraz rozumiem???

0

Ciekawe pytanie! Zalecam sprawdzić :) Ściagnij jakiś edytor bajtkodu i popatrz co generuje ci kompilator.

0

@golec2604, zrobiłem to za Ciebie.

public class A
{
    javax.swing.JButton button = new javax.swing.JButton("golec2604");
}

generuje kcode>generuje kod:
public class A {
javax.swing.JButton button;

public A();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: aload_0
5: new #2 // class javax/swing/JButton
8: dup
9: ldc #3 // String golec2604
11: invokespecial #4 // Method javax/swing/JButton."<init>":(Ljava/lang/String;)V
14: putfield #5 // Field button:Ljavax/swing/JButton;
17: return
}

a
```java
import javax.swing.JButton;
public class A
{
    JButton button = new JButton("golec2604");
}

generuje code>generuje kod
public class A {
javax.swing.JButton button;

public A();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: aload_0
5: new #2 // class javax/swing/JButton
8: dup
9: ldc #3 // String golec2604
11: invokespecial #4 // Method javax/swing/JButton."<init>":(Ljava/lang/String;)V
14: putfield #5 // Field button:Ljavax/swing/JButton;
17: return
}

Znajdź różnice.
0

po co ten kod?? nie znam jeszcze swinga. czy wy nie potraficie prosto odpowiedzieć na pytanie?? tylko wykładacie cała teorie, która jest zbędna w tym przypadku. pytam o jedna rzecz i chce odpowiedzi tylko na to. Jak zadam pytanie z kodem to odpowiadajcie kodem, gdy zapytam o pierdołe słownie to słownie odpowiedzieć i temat zamykany. Nie po to zadaje pytanie na forum żebym sie domyslał o co wam chodzi tylko oczekuje konkretnej odpowiedzi na pytanie. Temat byłby dawno zakonczony jak by ktos normalnie napisał a nie pieprzył zbędne dyrdymały.

0

Fajnie że jesteście specjalistami ale wiedzy nie potraficie przekazać. nie ma wykształcenia informatycznego/programistycznego i moge wiele rzeczy bardzo podstawowych nie wiedziec. czytam książka która nie do końca wszystko mówi a ja jestem dociekliwy gdy czegos nie rozumiem pytam na forum aby ktoś konkretnie powiedział a nie wyłozył wykład i kazał sie domyslić. Ktos powie konkretnie i dalej moge iść a nie zastanawiac się. Powiem tak: Miałem wyobrażenie że to co piszemy w pliku źródłowym i nazywamy go jakos tam jest w całości klasą.

Juz chyba wiem o co kaman. Ale szkoda że ktoś nie potrafi na samym poczatku napisać po ludzku i skończyło by sie na kilku postach.
Pozdro

0

@golec2604 ale ty uczysz się podstaw Javy już przynajmniej 3 miesiące jak wynika z twoich postów, niejeden już by zdążył współbieżność za ten czas dobrze opanować

0

Nie każdy jest taki sam. Zwłaszcza jak w książce tłumacza ort! i człowiek musi dochodzić duzo sam oraz gdybym miał tylko jave w zyciu pewnie byłoby lepiej.

1

PLIK to nie jest KLASA.

Klasa zaczyna się od słowa class i nawiasu i kończy nawiasem.
Gdy jest to interfejs, enum, ... zaczyna się od słowa interface, Enum, ... i kończy wraz z nawiasem.

Import jest na samej górze pliku, nie jest częścią klasy.

@Shalom był dziś wyjątkowo miły i cierpliwy, tłumaczył ci to setki razy.

P.S.: Agresja wobec ludzi, którzy chcą ci pomóc to nie jest dobre podejście.
P.S.2: Złej baletnicy przeszkadza rąbek u spódnicy, jak książka niefajna to zmień na inną. To nie książka jest odpowiedzialna za twoje braki.

0

Ale nie napisał tego tak jak Ty. A Ty napisałas to po ludzku. Dobra temat zakończony

0

@golec2604, uczysz się Javy parę miesięcy i niczego z niej nie rozumiesz. Nie masz żadnych podstaw by oceniać czy udzielona odpowiedź jest właściwa, czy nie. Nie wiem jak inni, ale ja nie będę się stosował do tych (chamskich i aroganckich) wymagań:

tylko wykładacie cała teorie, która jest zbędna w tym przypadku. pytam o jedna rzecz i chce odpowiedzi tylko na to. Jak zadam pytanie z kodem to odpowiadajcie kodem, gdy zapytam o pierdołe słownie to słownie odpowiedzieć i temat zamykany. Nie po to zadaje pytanie na forum żebym sie domyslał o co wam chodzi tylko oczekuje konkretnej odpowiedzi na pytanie. Temat byłby dawno zakonczony jak by ktos normalnie napisał a nie pieprzył zbędne dyrdymały.

Nie dostałeś ode mnie bana tylko dlatego, że świetnie się bawię czytając Twoje wypowiedzi.

0

Nowe pytanie.
Mam kilka projektów w programie Eclipse. w nowym projekcie mam nową klase ale używam w niej klasy z innego projektu. Jak w eclipsie zaimportować klase ze swojego innego projektu do nowego??

(Mógłbym ją skopiować do nowego projektu ale po co tworzyć znowu to samo i powiększać pamięc.)

0

Dodaj ten drugi projekt jako zależność we właściwościach swojego projektu.

0

No właśnie tylko jak to sie robi w eclipsie?

0

Już wiem. Tylko niepotrzebnie straciłem sporo czasu na to aby do tego dojśc. Mogłem przez to uczyć sie dalej czegos nowego. Po to zadaje pytanie na forum aby zaoszczedzic czas, ale widze że użytkownicy tego forum nie rozumieją tego.

0

@golec2604 To co Ci próbuje w dość nieprzyjemny sposób przekazać @Shalom to to, że w sumie piszesz a zaczynasz myśleć potem. Zmień kolejność, zanim coś napiszesz zastanów się parę razy czy rzeczywiście sam nie jesteś w stanie danego problemu sprawdzić/rozwiązać.

Oczywiście jeżeli piszesz z innych powodów, np czujesz się samotny i chcesz po prostu pogadać, to nie ma problemu. Od tego jednak jest offtopic.

0

Pisze w celu zaoszczędzenia czasu.

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