webForumDet fria alternativet

Detta funkar inte

3 svar · 199 visningar · startad av roj

rojMedlem sedan apr. 2002179 inlägg
#1

public abstract class Konto
{
private static final double RANTA = 0.0125;
private static final double LAN_RANTA = 0.0225;
private String support = "Bankens supportavdelnings tel: 12 34 56";

public static void getRanta(Konto k)
{
	if(k instanceof SparKonto)
	{
		System.out.println("Aktuell sparränta är "+(RANTA\*100)+"%");
	}
	else
	{
		System.out.println("Aktuell låneränta är "+(LAN_RANTA\*100)+"%");
	}
}

public void getSupport()
{
	System.out.println(support);
}

protected void setInsatt(int i)
{
	System.out.println("KONTO;Din insättning är registrerad");
}

protected abstract boolean getUttag(int i);
protected abstract int getSaldo();

}

Får detta felet:

C:\Program\Xinox Software\JCreator Pro\MyProjects\Konto.java:9: cannot resolve symbol
symbol : class SparKonto
location: class Konto
if(k instanceof SparKonto)
^
1 error

Process completed.

UlfTMedlem sedan maj 20018 027 inlägg
#2

Anledningen till felet kanske är att du inte har skapat någon klass som "SparKonto" (framgår i vart fall inte av din problembeskrivning om du gjort det). Jag skulle rekommendera en annan lösning. Du låter en klass "SparKonto" ärva från "Konto". Sedan låter du de båda klasserna ha varsin implementation av "getRanta()" som är anpassad för respektive klass. Då behöver du inte skicka in "Konto" till den metoden och slipper testa vad det är för typ av konto. Är det sparkontots getRanta som anropas, då blir det rätt. Så som du har gjort nu, utnyttjar du inte fördelarna med objektorienterad programmering.

rojMedlem sedan apr. 2002179 inlägg
#3

Tackar

PeWMedlem sedan juni 200010 432 inlägg
#4

... sen är det en fördel om man utnyttjar de kod-taggar som är inbyggt i webForum... det blir lite lättare att se kodens struktur då ;)

143 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)