Tôi có giao diện sau và lớp trừu tượng mà thực hiện nó:Java lớp trừu tượng thực hiện giao diện
interface Walk {
String walk();
}
public abstract class Animal implements Walk {
abstract String MakeNoise();
}
Và việc triển khai cụ thể như sau:
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...");
}
}
Đưa nó tất cả cùng nhau:
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());
}
}
}
}
Tôi gặp lỗi này
"walk() trong Cat không thể triển khai walk() trong Walk".
Bất kỳ ý tưởng nào? cảm ơn
Đó không phải là những gì lỗi nói. –
xin lỗi tôi đã chỉnh sửa nó – Marin
một câu hỏi của riêng tôi .... nên động vật cung cấp một "thực hiện" (ngay cả khi nó là một phương pháp trừu tượng) của walk()? – SJuan76