Aliluokan konstruktorit?

Jos abstrakti yläluokka "jyrsija" periytetään aliluokkaan "hiiri", niin miksi aliluokkaan ei voi laittaa useampaa konstruktoria?

Eli muiden konstruktorien tehtävä olisi alustaa Hiiri-luokka linkitetyn listan "solmuksi".

Jos taas yläluokassa/periytymättömässä luokassa on useampi konstruktori, ei tule virheilmoitusta.

Eli miten tuon oikein saa toimimaan?

   public Hiiri(String nimi, int ika, String vari) {
      super(nimi, ika);
      this.vari=vari;
      this.jarjestysnro=jarjestysnro;
   }

   private String vari;
   private Hiiri next;
   private int jarjestysnro;
   /*linkkikenttä viittaa toiseen olioon, jos next on null,
ei ole solmua mihin viitata */

Eli yläpuolella oleva rakenne toimii, mutta elmmista konstruktoreista tulee "herjaa" aaltosulkeiden käytöstä.

   public Hiiri (int uusi_hiirulainen ){
    jarjestysnro =uusi_hiirulainen;
nimi = new String("");
ika=0;
vari= new String("");
    next = null;
}// konstruktori joka alustaa uuden solmun

public Hiiri (Hiiri vanha)
{
jarjestysnro = vanha.jarjestysnro;
nimi = new String(vanha.nimi);
ika=vanha.ika;
    vari= vanha.vari;
next = null;
} // konstruktori
4464
Äänestä

Muut lukivat myös

Vastaukset 4

Vanhimmat

Voi laittaa. Konstruktoreissa pitää kutsua yliluokan konstruktoria.


public Hiiri(Hiiri vanha) {
    super(vanha.nimi, vanha.ika);
      
    /* ... */
}

public Hiiri(int uusi_hiirulainen) {
    super("", 0);
      
    /* ... */
}

Äänestä
  • Yläluokassa on yksi ainoa konstruktori, täytyykö siinä olla yhtä monta kuin aliluokassakin? Kun pelkkä viittaus superiin ei poistanut ongelmaa. Alla ote yläluokan konstruktorista ja luokasta.

    public class Jyrsija {
       
       protected String nimi;
       protected int ika;
       
       public Jyrsija(String nimi, int ika) {
       this.nimi = nimi;
       this.ika = ika;
       }

    Äänestä

  • sama kirjoitti:

    Yläluokassa on yksi ainoa konstruktori, täytyykö siinä olla yhtä monta kuin aliluokassakin? Kun pelkkä viittaus superiin ei poistanut ongelmaa. Alla ote yläluokan konstruktorista ja luokasta.

    public class Jyrsija {
       
       protected String nimi;
       protected int ika;
       
       public Jyrsija(String nimi, int ika) {
       this.nimi = nimi;
       this.ika = ika;
       }

    Ei tarvitse vaan yksi riittää. Kaikki aliluokan konstruktorit voivat käyttää sitä yhtä yliluokan konstruktoria, (kuten nuo kaksi esimerkki konstruktoria teki). Olisi hyvä jos voisit laittaa sen virhe ilmoituksen tänne tai sitten koko koodin.

    Äänestä

Eikös tämä seuraava ole aika turhaa:

nimi = new String(vanha.nimi);
nimi = new String("");

Kun voi laittaa:

nimi = vanha.nimi;
nimi = "";

Äänestä

Kommentoi aloitusta


mikä menee vikaan? kirjoitti:

Jos abstrakti yläluokka "jyrsija" periytetään aliluokkaan "hiiri", niin miksi aliluokkaan ei voi laittaa useampaa konstruktoria?

Eli muiden konstruktorien tehtävä olisi alustaa Hiiri-luokka linkitetyn listan "solmuksi".

Jos taas yläluokassa/periytymättömässä luokassa on useampi konstruktori, ei tule virheilmoitusta.

Eli miten tuon oikein saa toimimaan?

   public Hiiri(String nimi, int ika, String vari) {
      super(nimi, ika);
      this.vari=vari;
      this.jarjestysnro=jarjestysnro;
   }

   private String vari;
   private Hiiri next;
   private int jarjestysnro;
   /*linkkikenttä viittaa toiseen olioon, jos next on null,
ei ole solmua mihin viitata */

Eli yläpuolella oleva rakenne toimii, mutta elmmista konstruktoreista tulee "herjaa" aaltosulkeiden käytöstä.

   public Hiiri (int uusi_hiirulainen ){
    jarjestysnro =uusi_hiirulainen;
nimi = new String("");
ika=0;
vari= new String("");
    next = null;
}// konstruktori joka alustaa uuden solmun

public Hiiri (Hiiri vanha)
{
jarjestysnro = vanha.jarjestysnro;
nimi = new String(vanha.nimi);
ika=vanha.ika;
    vari= vanha.vari;
next = null;
} // konstruktori

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu