[java] Dzielenie zmiennych między klasami


#1

Witam,

mam kilka pytan odnośnie klas w javie.

Otóż załóżmy że klasa B przyjmuje 2 zmienne (nie wiem jak to nazwac :P)

public B(int zmienna1, int zmienna2){

		abc3 = zmienna1;

		abc4 = zmienna2;

	}

w Klasie A nadaję tej klasie te 2 zmienne:

_B = new B(640, 480);

Moja wątpliwość polega na tym iż:

mam klasę C, która chciałaby skorzystać z tych zmiennych, które w klasie A przypisałem do klasy B...

Czy to możliwe? Jak coś takiego zrobić?


(kostek135) #2

Konstruktor

Powiedz co chcesz dokładnie zrobić, bo robisz to dziwnie. Ja zrozumiałem, że masz obiekt B (kompozycja) w klasie A i chcialbys jego pola (ich wartości) przekazać do klasy C. Może po prostu dać klasie A metodę do zwrócenia instancji B a w definicji klasy B dać gettery?


#3

wybacz, lecz nie rozumiem...

Chodzi mi o to: mam klasę Przeciwnik, ktora przechowuje dane tego przeciwnika (szybkość, życie, siła, koordynaty).

Chcę jednak te informacje udostępnić też innym klasom.

Oczywiście trzeba wziąć pod uwagę, że jest kilka rodzajów "przeciwników":

private Przeciwnik potwor;

private Przeciwnik demon; itp.

A jakbym chciał odczytać dane o konkretnym rodzaju, wyglądało by to tak:

potwor.sila; itp.

O to mi chodzi.


(kostek135) #4

Ja bym to zrobił przez dziedziczenie. Zrobił klasę AbstractEnemy, i dla każdej klasy przeciwnika robił np. Monster extends AbstractEnemy, Demon extends AbstractEnemy. Staty przeciwnika, byłby zdefiniowane w klasie abstrakcyjnej, ale dzięki dziedziczeniu, ponieważ konkretny potwór byłby też klasy AbstractEnemy, to miałby jej pola.


(pain3hp) #5

IMO masz złą architekturę tego "systemu" już u podstaw. Powinieneś zrobić klasę bazową (jakiś punkt wyjścia "ras/postaci"), następnie poprzez dziedziczenie dorabiać/rozszerzać je o inne cechy, a postacie powinny być obiektami bo wg tego co piszesz to Ty robisz postacie w prywatnych polach klasy, i wtedy jedenym obiekcie masz kilka postaci? Przemyśl to co robisz...

-- Dodane 09.02.2012 (Cz) 18:24 --

Nie doczytałem do końca ale chodzi mi mniej więcej o to co napisał kostek135


(Kolas1986) #6

czy czasem nie chodzi Ci poprostu do metody zwracające wartości zmiennych w klasie

public class Przeciwnik {

    private int sila;


    public Przeciwnik(int sila) {

        this.sila = sila;

    }


    public int getSila() {

        return sila;

    }

    public void setSila(int sila) {

        this.sila = sila;

    }

}

#7

Chodzi mi o to, tylko w tym przypadku dostęp do tego ma tylko klasa wykonująca

public Przeciwnik(int sila)

.

W tym problem.

-- Dodane 11.02.2012 (So) 10:04 --

W sumie to nie jest zły pomysł :slight_smile:

Dzięki za pomoc.