Как использовать метод @override в Java с extends?
Здравтсуйте. Есть четрые интересующих класса, мне интересно как вывести @Override значение "System.out.println("Woooooooooof!");" в данном коде:
abstract public class Animal {
abstract public void greeting();
}
public class Dog extends Animal {
@Override
public void greeting() {
System.out.println("Woof!");
}
public void greeting(Dog another) {
System.out.println("Woooooooooof!");
}
}
public class BigDog extends Dog {
@Override
public void greeting() {
System.out.println("Woow!");
}
@Override
public void greeting(Dog another) {
System.out.println("Woooooowwwww!");
}
}
public class TestAnimal {
public static void main(String[] args) {
// Using the subclasses
Cat cat1 = new Cat();
Animal cat2 = new Cat();
Dog dog1 = new Dog();
Animal dog2 = new Dog();
BigDog bigdog1 = new BigDog();
Animal bigdog2 = new BigDog();
Animal[] animal = {cat1, cat2, dog1, dog2, bigdog1, bigdog2};
for (Animal a: animal) {
a.greeting();
}
}
}
Я помню это делается как то через inastanceof, но не помню как именно это работает.
Благодраю за помощь!
Ответы (2 шт):
Автор решения: Alexandr
→ Ссылка
Думаю можно как-то так, если, конечно, я Вас правильно понял:
package com.somepackage;
public class TestAnimal {
public interface Animal {
void greeting();
void greeting(Animal another);
}
public static class Dog implements Animal {
@Override
public void greeting() {
System.out.println("Woof!");
}
@Override
public void greeting(Animal another) {
System.out.println("Woooooooooof!");
}
}
public static class BigDog extends Dog {
@Override
public void greeting() {
System.out.println("Woow!");
}
@Override
public void greeting(Animal another) {
System.out.println("Woooooowwwww!");
}
}
public static void main(String[] args) {
// Using the subclasses
Dog dog1 = new Dog();
Animal dog2 = new Dog();
BigDog bigdog1 = new BigDog();
Animal bigdog2 = new BigDog();
Animal[] animals = {dog1, dog2, bigdog1, bigdog2};
for (Animal animal : animals) {
animal.greeting();
for (Animal anotherAnimal: animals) {
if (!animal.equals(anotherAnimal)) {
animal.greeting(anotherAnimal);
}
}
}
}
}
Автор решения: denis Krivorutchko
→ Ссылка
public class TestAnimal {
public interface Animal {
void greeting();
void greeting(Animal another);
}
public static class Dog implements Animal {
@Override
public void greeting() {
System.out.println("Woof!");
}
@Override
public void greeting(Animal another) {
System.out.println("Woooooooooof!");
}
}
public static class BigDog extends Dog {
@Override
public void greeting() {
System.out.println("Woow!");
}
@Override
public void greeting(Animal another) {
System.out.println("Woooooowwwww!");
}
}
public static void main(String[] args) {
// Using the subclasses
Dog dog1 = new Dog();
Animal dog2 = new Dog();
BigDog bigdog1 = new BigDog();
Animal bigdog2 = new BigDog();
Animal[] animals = {dog1, dog2, bigdog1, bigdog2};
for (Animal animal : animals) {
if (animal instanceof Dog && !(animal instanceof BigDog))
animal.greeting(new Dog());
else
animal.greeting();
}
}
}