Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java käännösvirhe; interface expected

Jaymaano [27.04.2005 18:04:59]

#

Kun yritän kääntää:

public class ArrayStack implements java.util.Stack
{
//...
}

tulee virheilmoitus "interface expected here
public class ArrayStack implements java.util(.)Stack" (osoitin sulkumerkkien kohdalla) Kokeilin myös extends Stack mutta sitten täytyisi muuttaa noiden metodien nimiä enkä halua näin tehdä. Osaako joku sanoa?

J

tsuriga [27.04.2005 18:16:17]

#

Stack on luokka eikä rajapinta, joten sitä ei voi implementoida. Voit laittaa tuon ArrayStackisi implementoimaan nuo samat rajapinnat kuin Stack ja tehdä itse nuo metodit.

Jaymaano [27.04.2005 18:28:31]

#

Kiitos avusta.. Olen tehnyt nuo ArrayStackin metodit tuohon luokkaan, mutta kuinka siis tehdä tuo rajapintojen implementointi? Täytyykö minun siis tehdä

public interface Stack{
   public void push(Object o);
   // sekä muut metodit joita aion arraystackissa käyttää?

jonka sitten implementoin tuolla ArrayStackissa? Niin. Unohtui vielä kysyä että missä tämä rajapinnan luominen tulisi suorittaa?

J

tsuriga [27.04.2005 20:06:29]

#

En usko että kääntäjä antaa tommoista koodia kääntää, Stack kun on varattu sana sen ollessa jo luokka. Tuot importsilla koodin alussa tarvittavat paketit ja sitten teet seuraavaa:

import java.util.*;
public class ArrayStack implements Cloneable, Collection, List, RandomAccess, Serializable {

renni [30.04.2005 20:17:04]

#

1) Luokkien nimet eivät ole varattuja sanoja.
2) Saman nimisiä luokkia voi olla vaikka kuinka paljon.
3) Toinen vaihtoehto olisi periyttää oma luokka suoraan tuosta java.util.Stack:istä, silloin ei tarvitse implementoida rajapintoja erikseen.
4) Ennen kuin tekee omia yleiskäyttöisiä luokkia, kannattaa vilkaista mitä kaikkea Javassa on jo valmiina.

Jaymaano [01.05.2005 13:43:20]

#

Itseasiassa sain sen mitä halusin lisäämällä juuri tuon "interface Stack":n ja implementoimalla sen ArrayStack luokassa. Minun piti vain käyttää samoja metodea kuin olin määritellyt interfacessa..

Mielestäni kokeilin oman luokan periyttämistä, mutta muistaakseni kääntäjä herjasi jotain. Pitänee kokeilla vielä jos sattuu aikaa olemaan.

Kiitos avusta.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta