Avatar billede frankedrengen Nybegynder
18. september 2013 - 12:28 Der er 7 kommentarer og
1 løsning

hvordan kan jeg bruge constructor som parameter i en anden constructer

hvordan kalder jeg fra PersonMain, constructoren i Person, hvor constructoren i Person har parameterne (String name, int age, setKortHaar(), setHairColor), hvor setKortHaar()-metoden er fra constructoren i Haar classen og setHairColor()-metoden er fra constructoren i Color classen.
målet er at selv skulle taste 4 argumenter ind når jeg skaber et nyt object af Person i PersonMain classen

her er brugt metoder til at udskrive:
Frank
42
kort
Black


koden siger:

public class PersonMain {
  public static void main(String[] args) {
      Person pers1 = new Person("Frank", 42);
      System.out.println(pers1.getName());
      System.out.println(pers1.getAge());
      System.out.println(pers1.getHaar().kort());
      System.out.println(pers1.getColor().color());

  }

}

public class Person {
  private String name;
  private int age;
  private Haar haar;
  private Color color;

  public Person(String name, int age) {
      this.age = age;
      this.name = name;
      haar = new Haar();
      color = new Color();
     
  }
  public String getName() {
      return name;
 
  }
  public int getAge() {
      return age;
 
  }
  public Haar getHaar() {
      return haar;
 
  }
  public Color getColor() {
      return color;
  }
 
}

public class Haar {
  private String kortHaar;
  private String langtHaar;
 
  public Haar() {
     
  }
 
  public void setKortHaar(String kort) {
      this.kortHaar = kort;
 
  }
  public String getKortHaar() {
      return kortHaar;
 
  }
  public String kort() {
      return "kort";
 
  }
 
}

public class Color {
    private String hairColor;
   
    public Color() {
   
    }
   
    public void setHairColor(String color) {
      this.hairColor = color;
   
    }
    public String getHairColor() {
      return hairColor;
   
    }
    public String color() {
      return "black";
   
    }

}
Avatar billede arne_v Ekspert
18. september 2013 - 15:25 #1
Jeg ville lave constructoren som:

public Person(String name, int age, Haar haar, Color color)

og sende objecj ref med over.
Avatar billede frankedrengen Nybegynder
18. september 2013 - 16:32 #2
Objecj ref ? Er det setters og getters ?
Avatar billede arne_v Ekspert
18. september 2013 - 16:43 #3
Nej.

Hvis ctor er:

public Person(String name, int age, Haar haar, Color color)

kan du kalde med:

Person p = new Person("NN", 21, new Haar(), new Color());
Avatar billede frankedrengen Nybegynder
18. september 2013 - 17:23 #4
ok det virker fint. Men kan man ikke kalde og få fat i setteren i Haar med det samme, så alt bliver sat med et kald??
Person p = new Person("NN", 21, setHaar(), setColor());
Avatar billede arne_v Ekspert
18. september 2013 - 17:29 #5
Du kunne lade Haar og Color constructorerne tage argumenter og saa bruge:

Person p = new Person("NN", 21, new Haar(Kort), new Color(Blond));

ellers maa du bruge lidt flere linier:

Haar haar = new Haar();
haar.setStil(Kort);
...
Person p = new Person("NN", 21, haar, color);
Avatar billede frankedrengen Nybegynder
18. september 2013 - 17:45 #6
ok super, prøver at lege med det!
kender du nogle gode øvelser til at lære mere om classer, objecter ??

send svar. Tak for hjælpen!
Avatar billede arne_v Ekspert
18. september 2013 - 18:07 #7
oevelse goer mester

bare arbejd noget med det

overvej at hent noget eksisterende Java kode og studer den til inspiration
Avatar billede arne_v Ekspert
18. september 2013 - 18:07 #8
og et svar
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