Avatar billede Svenne Krap Nybegynder
06. maj 2010 - 16:47 Der er 2 kommentarer og
1 løsning

Felter ved nedarvning

Jeg har et (forståelses?) problem vedr. nedarvning.

Forestil jer:

public class animal {
    Integer legs = 0;

    public Integer get_legs() {
        return legs;
    }
}

public class Human extends animal {
    Integer legs = 2;
}


public class Dog extends animal{
    Integer Legs = 4;
}

public class Main {
    public static void main(String[] args) {
    animal a = new Human();
    System.out.println(a.legs);
    System.out.println(a.get_legs());

    Human h = new Human();
    System.out.println(h.legs);
    }
}

I dette eksempel har jeg forventet at få (2,2,2) som resultat (vi taler jo om tre print af "Human"), men får (0,0,2).

Hvordan får jeg fat i mine "2" taller uden at angive at jeg bruger et menneske (kunne jo også finde på at bruge en hund).
Avatar billede arne_v Ekspert
06. maj 2010 - 16:55 #1
Fields er ikke virtuelle i Java saa du skal bruge metoder til den slags.
Avatar billede arne_v Ekspert
06. maj 2010 - 17:00 #2
Mit forslag vil vaere at bruge en abstrakt basis klasse med en abstrakt metode.

Demo:

public class OOFun {
    public static void main(String[] args) {
        Animal a1 = new Human();
        System.out.println(a1.getLegs());
        Animal a2 = new Dog();
        System.out.println(a2.getLegs());
    }
}

abstract class Animal {
    public abstract int getLegs();
}

class Human extends Animal {
    @Override
    public int getLegs() {
        return 2;
    }
}


class Dog extends Animal{
    @Override
    public int getLegs() {
        return 4;
    }
}
Avatar billede arne_v Ekspert
13. juni 2010 - 04:20 #3
OK?
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