wywołanie funkcji przyjmującej referencje do obiektu jako arg.

0

dzien dobry

public class test
{
public abstract class Bazowa //kazda z klas w osobnym pliku
{
        Bazowa() {};
        public abstract void MCW();
}
 
class Pochodna1 : public Bazowa
{
        public void MCW() {};
}
 
Class Pochodna2 : public Bazowa
{
        public void MCW() {};
}
 
class Pochodna3 : public Pochodna2
{
        public int rokUrodzenia() {return 2000;};        
}
 
main.java
 
public static void poch1(Pochodna1 p1)
{}
 
public static void poch2(Pochodna2 p2)
{}
 
public static void poch3(Pochodna3 p3)
{}
 
int main()
{
//zalozmy ze ilosc to 3
        Bazowa[] tab=new Bazowa[ilosc];
        tab[0]=new Pochodna1; 
        tab[1]=new Pochodna2;
        tab[2]=new Pochodna3;        
 
        poch1(tab[0]);//chciałbym przekazać do funkcji poch1 obiekt tab[0], w jaki sposób mogę to zrobić ?
        poch2(tab[1]);//chciałbym przekazać do funkcji poch2 obiekt tab[1], w jaki sposób mogę to zrobić ?
        poch3(tab[2]);//chciałbym przekazać do funkcji poch3 obiekt tab[2], w jaki sposób mogę to zrobić ?
 
        return 0;
}
}
0

Każdy argument reprezentujący obiekt jest referencją do niego. Nie ma innej możliwości.
Tak więc już to robisz, tyle że "new Pochodna1;" nie jest wywołaniem konstruktora klasy. W Javie musi to być przynajmniej "new Pochodna1();".
Na dodatek typem argumentu w metodach Poch1, 2 i 3 musi być Bazowa jeżeli chcesz przekazywać argument bez rzutowania. Dopiero w metodzie możesz sobie ewentualnie sprawdzić jakiego typu jest obiekt i stosownie to tego zareagować, albo traktować każdy przekazany obiekt tak jak obiekt klasy Bazowa.

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