Avatar billede magna Nybegynder
13. maj 2008 - 11:01 Der er 2 kommentarer og
1 løsning

nybegynderhjælp til superklasse

Hej eksperter(arne især dig!)

Vi sidder og forsøger at lave et program til en svømmeklub ved navn delfinen til en skoleopgave og undervejs blev vi bedt om at lave en superklasse. Vi har så taget udgangspunkt i vores allerede fungerende klasse ved navn Member.

her er vores kode fra member

import java.util.*;
import java.text.*;
import java.io.*;

/**
* Write a description of class Kontigent here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Member
{
  // Det fulde navn på svømmeren
    private String name;
    // Alderen på svømmeren
    private int age;
    // Privatadressen på svømmeren oplyst i vej, postnummer og by
    private String address;
    // Medlemsstatus på svømmeren
    private boolean status;
    // Typen på svømmeren defineres mht. alder
    private boolean type;
    // Fødselsdato på svømmeren
    private String birthDate;
    // Fødselsdatogrænse på svømmeren
    private String birthDateLimit;
   
    private String relation;
    private Date newDate;
    private Date limitDate;
    //Liste over navne
    private static ArrayList<Member> members = new ArrayList<Member>();
    private String member;
    private String birthDay;
 
 
    /**
    * Indmeld en ny svømmer med personlige oplysninger
    * @param fuldeNavn Navnet på svømmeren.
    * @param birthDay indtast din fødselsdato i formatet 2008-05-30
    */
    public Member(String fullName, String birthDay, String privateAddress)
        throws IllegalArgumentException
    {
        name = fullName;     
        this.birthDay = birthDay;
        address = privateAddress;
        members.add(this);
   
    }
 
    public static void print()
    {
        for(int i =0; i< members.size();i++){
            System.out.println(members.get(i));
        }
   
    }
    public static void saveList() throws IOException {
        File outFile = new File("medlem.txt");
            FileWriter out = new FileWriter(outFile);
            for(int i =0; i < members.size();i++){
                out.write(members.get(i).toString() + "\r\n");
            }
            out.close();
    }
   
    public static void getList() throws IOException, ParseException {
        BufferedReader in = new BufferedReader(new FileReader("medlem.txt"));
            String curLine = null;
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            while((curLine = in.readLine()) !=null){
                String[] data = curLine.split("\t");
                Member myMember = new Member(data[0], data[1] , data[2]);
            }
            in.close();
    }
   
    public static void clearList() throws IOException {
        members.clear();
    }
   
    public String toString(){
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        return name + "\t" + birthDay + "\t" + address;
    }
   
    private int getDateYear()
    {
        DateFormat df = new SimpleDateFormat("yyyy");
        Date date = new Date();
        String stringDate = df.format(date);
        int currentDate = new Integer(Integer.parseInt(stringDate));
        return currentDate;
    }
   
    /**
    * Returnerer fødselsdatogrænsen på svømmeren
    */
    public Date findBirthDateLimit()
    {
    try
    {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date limitDate = df.parse(birthDay);
        String sDate = df.format(limitDate);
        return limitDate;

       
    } catch (ParseException e)
    {
        e.printStackTrace();
    }
        return newDate;
    }
    /**
    * Returnerer fødselsdatoen på svømmeren
    */
    public Date findBirthDate()
    {
    try
    {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date newDate = df.parse(birthDay);
        String sDate = df.format(newDate);
        return newDate;

       
    } catch (ParseException e)
    {
        e.printStackTrace();
    }
        return newDate;
    }
}


Dernæst extender vi til en klasse vi har kaldt Swimmer, som så skal hente navnet fra Member.


public class Swimmer extends Member
{
    private String holdNavn;
    private String disciplin;
   
    public Swimmer(String fullName, String team, String disciplin)
    {
        super(fullName);
        holdNavn = team;
        this.disciplin = disciplin;
    }
}

Vi får nu en fejl
cannot find symbol - constructor Member(java.lang.String)

Vi har derefter forsøgt at lave en helt ny member hvor kun navnet er implementeret, hvor den ikke laver noget fejl.
Vi kan derfor ikke forstå hvorfor den laver fejl i vores originale kode.

hjælp!
Avatar billede johny Nybegynder
13. maj 2008 - 11:18 #1
hej magna

Når I benytter jer af en super klasse, så initialiserer I faktisk to objekter. Et objekt af sub klassen, og et objekt af super klassen. Derfor skal du også give de rigtige inputs til deres konstruktører.

Kaldet super("input") er et kald til super klassens konstruktør, og derfor skal der altså også eksisterer en konstruktør med netop dette input.

Det er det der er problemet i jeres kode, og også hvad fejlkoden fortæller. I har ikke nogen konstruktør for Member med kun 1 string som input. Så mit foreslag til rettelse ville være at rette jeres public Swimmer konstruktør til:

public Swimmer(String fullName, String birthDay, String privateAddress, String team, String disciplin)
{
  super(fullName, birthDay, privateAddress);
  holdNavn = team;
  this.disciplin = disciplin;
}

Det skulle gerne fjerne fejlen.

Hvis I ikke vil have Swimmer udvidet med de ting, så er I nød til at lave en ekstra konstruktør på Member der ser således ud:
public Member(String fullName)
{
  name = fullName;
  members.add(this);
}
Avatar billede magna Nybegynder
13. maj 2008 - 11:35 #2
mange tak for hjælpen smid et svar
Avatar billede johny Nybegynder
13. maj 2008 - 12:12 #3
Det var så lidt... :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester