/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
'The method getUserName(String) from the t~
Fra : Stefan Kristensen


Dato : 09-07-03 20:38

Hej NG.

Jeg har defineret en abstrakt klasse DBMS med en abstrakt metode: abstract
String getUserName(String userID);
Så har jeg søreme også defineret en klasse, der extender DBMS. Den kalder
jeg for MSSQLServer.

Hele ideen er at gøre programmet transperent i forhold til databaser. Hvis
programmet skal køre på en anden database, defineres en ny klasse, der
extender DBMS. Men her kommer problemet: Jeg kan ikke kalde de abstrakte
metoder, se sidste linie. Hvordan får jeg det her til at virke efter
hensigten?

Stefan

I klassen DBManager har jeg defineret følgende procedure:
public DBMS getDBMS(int db){
switch(db){
case 1:
return new MSSQLServer(); // MSSQLServer extends DBMS
}
}

I klassen User har jeg følgende:
private String userID, userName;
private DBMS dbms:
private DBManager dbMan = new dbManager();

public User(String userID){
dbms = dbMan.getDBMS(1); // Returnurer new MSSQLServer, der extender
DBMS
this.userID = userID;
// Det her går ikke godt, da 'The method getUserName(String) from the type
DBMS is not visible'
this.userName = dbms.getUserName(userID);
}




 
 
Morten (09-07-2003)
Kommentar
Fra : Morten


Dato : 09-07-03 21:16

Stefan Kristensen wrote:

> Hej NG.
>
> Jeg har defineret en abstrakt klasse DBMS med en abstrakt metode: abstract
> String getUserName(String userID);

Prøv at erklære metoden public, altså:

public abstract String getUserName(String userId);

Uden explicit angivelse af public, private eller protected er den
"package", se:

http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html

Mvh Morten



Stefan Kristensen (10-07-2003)
Kommentar
Fra : Stefan Kristensen


Dato : 10-07-03 19:08

> Prøv at erklære metoden public, altså:
Det var jo lige det

Tak.
Stefan



Lars Dam (09-07-2003)
Kommentar
Fra : Lars Dam


Dato : 09-07-03 21:57

On Wed, 09 Jul 2003 22:15:38 +0200
Morten <usenet@kikobu.com> wrote:

> Stefan Kristensen wrote:
>
> > Hej NG.
> >
> > Jeg har defineret en abstrakt klasse DBMS med en abstrakt metode: abstract
> > String getUserName(String userID);
>
> Prøv at erklære metoden public, altså:
>
> public abstract String getUserName(String userId);
>
> Uden explicit angivelse af public, private eller protected er den
> "package", se:
> http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html

Og hvad har så lige det med abstract at gøre? ingenting. abstract betyder at der skal laves en afledt implementation af den klasse/metode der er abstract, og det har intet med access kontrol at gøre.

En abstract metode _skal_ implementeres i en afledt klasse, hvis ikke, så skal klassen være abstract, og så skal den implementeres 'senere'.

Stefan ikke vist hvordan han har defineret getUserName() i hans MSQLServer klasse, men een ting er sikkert, og det er at han skal implementere den selv.

> Mvh Morten


vh. ld

Søg
Reklame
Statistik
Spørgsmål : 177513
Tips : 31968
Nyheder : 719565
Indlæg : 6408605
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste