Dziedziczenie - klasy abstrakcyjne

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

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

0

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

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.

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
	}
}

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