Java abstraite de la classe implémente l'interface
J'ai l'interface suivante et abstraite de la classe qui l'implémente:
interface Walk {
String walk();
}
public abstract class Animal implements Walk {
abstract String MakeNoise();
}
Et la suite des implémentations concrètes:
class Cat extends Animal {
String MakeNoise() {
return "Meow";
}
@Override
String walk() {
return "cat is walking";
}
}
class Dog extends Animal {
@Override
String walk() {
return "Dog is walking";
}
@Override
String MakeNoise() {
return "bark";
}
}
class Human {
public void Speak() {
System.out.println("...Speaking...");
}
}
Mettant tous ensemble:
class MainClass {
public static void main(String[] args) {
Random randomGen = new Random();
Animal[] zoo = new Animal[4];
zoo[0] = new Cat();
zoo[1] = new Dog();
zoo[2] = new Cat();
zoo[3] = new Cat();
//System.out.println(zoo[ randomGen.nextInt(2)].MakeNoise());
for (Animal animal : zoo) {
if (animal instanceof Dog) {
Dog jeffrey = (Dog) animal;
System.out.println(jeffrey.MakeNoise());
}
}
}
}
J'obtiens cette erreur
"walk() dans le Chat ne peut pas mettre en œuvre de marche() dans le Pied" .
Des idées? grâce
Ce n'est pas ce que l'erreur dit.
désolé, j'ai édité
une question de mon propre.... devrait Animal fournir une "mise en œuvre" (même si c'est une méthode abstraite) de marche()?
Je doute encore que ce que l'erreur dit. Si vous souhaitez une aide efficace, donner de l'information efficace: copier le message d'erreur mot à mot dans votre question.
Lors de la saisie dans les messages d'erreur, le seul clés de vos doigts doivent toucher sont
désolé, j'ai édité
une question de mon propre.... devrait Animal fournir une "mise en œuvre" (même si c'est une méthode abstraite) de marche()?
Je doute encore que ce que l'erreur dit. Si vous souhaitez une aide efficace, donner de l'information efficace: copier le message d'erreur mot à mot dans votre question.
Lors de la saisie dans les messages d'erreur, le seul clés de vos doigts doivent toucher sont
ctl/command-c
et ctl/command-v
.OriginalL'auteur Marin | 2011-12-14
Vous devez vous connecter pour publier un commentaire.
Méthodes dans les interfaces sont implicitement
public
. Cependant, des méthodes dans les classes sont paquet-visible par défaut. Vous ne pouvez pas réduire la visibilité d'une méthode surchargée, c'est à dire que vous ne pouvez pas faire des trucs comme ça:Dans votre cas, la solution consiste à déclarer
walk()
commepublic
dansDog
etCat
.C'était une belle prise, Oli. Je te le dis, le pire des bugs que j'ai eu à traiter avec ont toujours descendre à silly stuff comme ceci.
OriginalL'auteur Oliver Charlesworth
L'erreur eclipse donne est:
La méthode doit être public, car elle est définie dans une interface.
OriginalL'auteur Bozho
Méthodes d'Interface doit être publique. Vous devez déclarer
walk()
comme une méthode publique dans Chat.OriginalL'auteur Ted Hopp
Faire
String walk()
implémentationspublic
. Qui va le corrigerOriginalL'auteur reederz