• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dziwny problem z najprostrzym package JAVA

0 głosów
407 wizyt
pytanie zadane 28 czerwca 2024 w Java przez Wojo772233 Użytkownik (500 p.)

Witam. Czemu moja struktura katalogów dla takiego kodu:
 

package mypack;

public class Balance {
    String name;
    double bal;

    Balance(String n, double b){
        bal = b; 
        name = n;
    }

    void show()
    {
        if(bal < 0)
            System.out.println("-->> ");

        System.out.println(name + ": " + bal + " zł");
    }
}
package mypack;

public class AccountBalance {
    public static void main(String[] args) {
        Balance[] current = new Balance[3];
        current[0] = new Balance("fielding", 123.23);
        current[1] = new Balance("Wilhelm Tell", 157.02);
        current[2] = new Balance("Tom Jackson", -12.23);

        for(int i = 0; i < 3; i++){
            current[i].show();
        }
    }
}

musi wyglądać tak że pliki Balance i AccountBalance muszą być w katalogu o ścieżce:
"C:\Users\wojo4\OneDrive\Pulpit\Kompendium\projekt\mypack\mypack\Balance.java"

oraz

"C:\Users\wojo4\OneDrive\Pulpit\Kompendium\projekt\mypack\mypack\AccountBalance.java"
 

a kolejny plik pakietu "mypack.xd" nie musi mieć podwójnego folderu:
"C:\Users\wojo4\OneDrive\Pulpit\Kompendium\projekt\mypack\mypack\xd\test.java"
oto jego kod jakby ktos byl ciekawy:
 

package mypack.xd;

class test {
    static int wiek = 1;
    static void testuj(){
        System.out.println("wiek = " + wiek);
    }    

    public static void main(String[] args) {
        testuj();
    }
}

 

1 odpowiedź

0 głosów
odpowiedź 28 czerwca 2024 przez Wiciorny Ekspert (282,600 p.)

Nie wiem czemu tak być musi, bo generalnie tak być nie musi. Nie wiem kto tego wymaga.

Jest istotna różnica między tymi dwoma pakietami, mianowicie W Javie, klasa u Ciebie test   jest bez modyfikatora dostępu (czyli bez słowa kluczowego public, protected lub private) ma domyślny poziom dostępu, zwany również poziomem dostępu pakietowego (ang. package-private).
Więc ta klasa nie jest widoczna poza pakietem mypack.xd

Klasy pozostałe są publiczne, dostępne wszędzie, nie muszą być w tym samym pakiecie, są widoczne również w pakiecie mypack.xd

class Balance
 -> jej instancja, obiekt jest wykorzystywany przez klasę  class AountBalance z racji, że obie klasy są publiczne, nawet jak nie będą w tym samym pakiecie, to spokojnie możesz wykonać te linię 

  Balance[] current = new Balance[3];

natomiast spróbuj dodać teraz do jednej z twoich klas w pakiecie mypackage klasę test 
 

test myTest = new Test(); // tego nie da sie zrobic po za pakietem wiec bedzie blad

chociaż z tego co napisałeś, twoja klasa test i tak znajduje się w dodatkowym pakiecie xd, który znajduje się w pakiecie mypackage
\projekt\mypack\mypack\xd\   ->mypack\mypack jest to pakiet mypack w którym jest pakiet mypack i potem jeszcze pakiet xd. 

Podobne pytania

0 głosów
0 odpowiedzi 434 wizyt
pytanie zadane 6 kwietnia 2023 w Systemy operacyjne, programy przez MacieKap Bywalec (2,400 p.)
0 głosów
1 odpowiedź 289 wizyt
pytanie zadane 18 czerwca 2021 w PHP przez Renzov Obywatel (1,220 p.)
0 głosów
0 odpowiedzi 290 wizyt
pytanie zadane 17 czerwca 2021 w PHP przez Renzov Obywatel (1,220 p.)

93,630 zapytań

142,554 odpowiedzi

323,055 komentarzy

63,136 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2174p. - dia-Chann
  2. 2153p. - DziarnowskiJ
  3. 2123p. - Łukasz Piwowar
  4. 2105p. - CC PL
  5. 2077p. - raydeal
  6. 1957p. - Maurycy W
  7. 1954p. - Adrian Wieprzkowicz
  8. 1895p. - rucin93
  9. 1887p. - Łukasz Eckert
  10. 1855p. - Michal Drewniak
  11. 1811p. - rafalszastok
  12. 1777p. - robwarsz
  13. 1588p. - Tomasz Bielak
  14. 1491p. - Rafał Trójniak
  15. 1377p. - ssynowiec
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...