Dziedziczenie - klasy abstrakcyjne

Odpowiedz Nowy wątek
2011-10-07 15:06
mti
0

Hej mam mały problem z dostaniem się do zmiennych wsp_x i wsp_y. Może najpierw pokaże odpowiednią część kodu a następnie wytłumaczę na czym polega problem.


abstract class ksztalt
{
    private int wsp_x;
    private int wsp_y;

    public ksztalt()
    {
        wsp_x=3;
        wsp_y=5;
    }
} 

A więc mamy abstrakcyjna klasę kształt no i w niej mam prywatne zmienne które w konstruktorze inicjuje z jakimiś tam wartościami. Poniżej mam drugą klasę dziedziczącą po klasie kształt:


class Odcinek extends ksztalt
 {
    public Odcinek()
    {
        super();
                Graphics g = null;
                g.drawLine(a, a, a, a); //tu jest problem
    }
 }

i właśnie nie wiem w jaki sposób przekazać do drawLine'a wsp_x oraz wsp_y. Rozumiem ze muszę wywołać super(); ale jak dzięki temu otrzymam zmienne które chcę? Problem wydaje się banalny jednak mam na tyle zaćmiony w tym momencie umysł, że potrzebuje pomocy.
Pozdrawiam Mti

Pozostało 580 znaków

2011-10-07 15:23
Moskitek
0

proponuję zaincludować do projektu jakiś framework do expression language i za pomocą refleksji dobierać się do tych zmiennych :D
już nieco bardziej poważnie - zrób to za pomocą java.reflect
a bardziej poważnie to może użyć protected
a jeszcze bardziej poważnie to może spróbować seterów i geterów:P

a już tak bardzo poważnie to parametry w konstruktorze - moskitek 2011-10-07 15:25

Pozostało 580 znaków

2011-10-07 15:35
mti
0

Tak własnie myślę, że najrozsądniej będzie przekazać to w konstruktorze. Ale dzięki za utwierdzenie w przekonaniu :)

Pozostało 580 znaków

2011-10-07 15:35
0

W Javie private oznacza dostępne tylko danej klasy, a więc niedostępne dla podklas i klas z tego samego pakietu. Protected jest dostępne dla podklas i klas z tego samego pakietu.


"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

2011-10-07 21:42
0

Najprostsze i chyba najbezpieczniejsze rozwiązanie:

package com.olamagato.junk;

import java.awt.Graphics;

public abstract class Ksztalt
{
    private int wsp_x;
    private int wsp_y;

    protected int getWsp_x() { return wsp_x; }
    protected int getWsp_y() { return wsp_y; }

    public Ksztalt()
    {
        wsp_x = 3;
        wsp_y = 5;
    }
}
class Odcinek extends Ksztalt
{
    public Odcinek()
    {
        super();
        //...
        g.drawLine(getWsp_x(), getWsp_y(), 1000, 1000); //po problemie
    }
}

Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to właściwie po co...?
edytowany 1x, ostatnio: Olamagato, 2011-10-07 22:49

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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