Argument jako klasa bazowa

0

Witam, przedstawię taką sytuację :

public class DynamicznyObiekt extends Obiekt
{
    protected float m;
    public float getM() {return this.m;}
    public void setM(float m) {this.m = m;}
} 
 private int Oblicz(Obiekt obiekt)
    {
        this.V = this.G * obiekt.getM();
    }

Przerzuciłem się z C++ na Javę i nie mogę znaleźć jak powinien ten kod wyglądać. Trochę opisowo:
W argumencie metody Oblicz mam obiekt bazowy (abstrakcyjny), ale korzystam w niej z obiektu pochodnego od niego. Moje pytanie: Co zrobić bym mógł korzystać ze składowych i metod obiekt pochodnego, jeśli w argumencie metody Oblicz jest obiekt bazowy ?

2

Chodzi Ci o odpowiednik dynamic_cast z C++? Jeśli tak to trzeba po prostu rzutować obiekt klasy bazowej na obiekt klasy pochodnej:

if (obiekt instanceof DynamicznyObiekt) {
    ((DynamicznyObiekt) obiekt).getM();
}

Tylko jeśli jesteś zmuszony takie rzutowanie zrobić, to często znaczy, że jest zły design albo tej funkcji Oblicz(), albo tamtej hierarchii.

2
  1. rzutowanie w dół, ale to już było.
  2. niech klasa Obiekt ma metodę abstrakcyjną getM().
0

Dziękuję bardzo za pomoc, wykorzystałem** rzutowanie w dół.**

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