Klasa prywatna w Java?

2011-10-04 19:43
michał
0

W "polskim internecie" jakoś google na wpisanie "klasa prywatna java" nie daje mi wyników, które by mi cokolwiek wyjaśniły. Dlatego pytam tutaj. Jak to jest z klasami prywatnymi w Javie? Do czego i jak je uzywać?

edytowany 1x, ostatnio: madmike, 2016-12-13 18:26

Pozostało 580 znaków

2011-10-04 19:57
michał
0

Np. jak użyć (jakiś dowolny przykład) klasy prywatnej + watki. Bo mi nic nie (wychodzi) przychodzi do głowy. Może bycnawet jakieś najprostsze wyswietlanie napisu. To mi nic nie wypisuje a (chyba?) powinno:

class InnaKlasa extends Thread{ 

    private class Watek{
        public void wypisz(){
            System.out.println("Hello world!");
        }

    public Watek w = new Watek();     

    public void run(){
        w.wypisz();
    }
    }
}

public class Zad {
    public static void main(String[] args) {
        InnaKlasa w1 = new InnaKlasa();
        w1.start();
    }
}

Pozostało 580 znaków

2011-10-04 20:02
1

Proste jak drut, klasy prywatne nie są widziane poza danym modułem, fin.


Pozostało 580 znaków

2011-10-04 20:05
michał
0

To w takim razie jako to ugryźć? Samo:

private class a extends Thread{}

wywala błąd, że private jest tu niedozwolone.

Pozostało 580 znaków

2011-10-04 20:23
0

Źle klamerki postawiłeś. Działający kod:

class InnaKlasa extends Thread{ 

    private class Watek{
        public void wypisz(){
            System.out.println("Hello world!");
        }
    }
    public Watek w = new Watek();     

    @Override
    public void run(){
        w.wypisz();
    }

}

public class Main {
    public static void main(String[] args) {
        InnaKlasa w1 = new InnaKlasa();
        w1.start();
        try
        {
            w1.join();
        } catch(Exception e)
        {            
        }
    }
}

I fart u die.

Pozostało 580 znaków

2011-10-04 20:29
michał
0

Dziękuję:) W międzyczasie znalazłem taki oto kod:

class Tester {

    private class Watek extends Thread {
        public void run(){
            System.out.println("Hello world!");
        }
    }

    public void funkcja(){
        Watek w = new Watek();
        w.start();
    }
}

Czy są one równoznaczne?

Tak. Doczytaj jeszcze o join()- http://download.oracle.com/ja[...]/java/lang/Thread.html#join() w skrócie chodzi o to, żeby program nie zakończył się przed zakończeniem jakiegoś wątku(chyba, że jest to zamierzone). - mychal 2011-10-04 20:38

Pozostało 580 znaków

2011-10-04 20:38
michał
0

@winerfresh: to jaki jest zakres widoczności klasy prywatnej, o ile tak to można nazwać? Poza nią mogę tworzyć jej obiekty, i mam do nich dostęp - więc nie bardzo rozumiem tę prywatność.

Pozostało 580 znaków

2011-10-04 21:35
0

@michał: A spróbuj stworzyć nową klasę, np. MojaInnaKlasa i z niej odwołać się do klasy Tester.Watek :> Jako, że Ci się nie uda tego dokonać, to stwierdzam: to jest właśnie prywatność ;p

Pozostało 580 znaków

2011-10-04 21:59
0

Można jednak mieć dostęp do metod obiektu klasy prywatnej i to jest często spotykana strategia. To znaczy, nasz klasa prywatna implementuje publiczne interfejsy albo dziedziczy po nieprywatnych klasach bazowych, a my zwracamy obiekt naszej klasy prywatnej zrzutowany na jakiś interfejs lub nieprywatną klasę bazową.

interface Interfejs {

    void metoda1();
}

abstract class KlasaBazowa {

    abstract void metoda2();
}

public class Main {

    private class Klasa extends KlasaBazowa implements Interfejs {

        public void metoda1() {
            throw new UnsupportedOperationException("Not supported yet.");
        }

        @Override
        void metoda2() {
            throw new UnsupportedOperationException("Not supported yet.");
        }
    }

    Interfejs zwróćNasząSuperTajnąImplementację() {
        return new Klasa();
    }

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

"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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