fork(3) download
  1. class Animal {
  2. public void fazBarulho() {
  3. System.out.println("silêncio");
  4. }
  5. }
  6. class Dog extends Animal {
  7. public void fazBarulho() {
  8. System.out.println("au au");
  9. }
  10. }
  11. class Cat extends Animal {
  12. public void fazBarulho() {
  13. System.out.println("miau");
  14. }
  15. }
  16. class Ideone {
  17. public static void main(String[] args) {
  18. Dog dog = new Dog();
  19. Animal animal = new Animal();
  20. Animal animal2 = new Dog();
  21. Animal animal3 = new Cat();
  22. dog.fazBarulho();
  23. animal.fazBarulho();
  24. animal2.fazBarulho(); //concretamente é um cachorro
  25. animal3.fazBarulho(); //concretamente é um gato
  26. System.out.println("-- Castings agora --");
  27. ((Animal)dog).fazBarulho(); //upcasting
  28. ((Dog)animal2).fazBarulho(); //downcasting, funciona
  29. ((Dog)animal3).fazBarulho(); //downcasting, dá erro porque um gato não é um cachorro
  30. ((Dog)animal).fazBarulho(); //downcasting, dá erro aqui
  31. }
  32. }
Runtime error #stdin #stdout #stderr 0.1s 320576KB
stdin
Standard input is empty
stdout
au au
silêncio
au au
miau
-- Castings agora --
au au
au au
stderr
Exception in thread "main" java.lang.ClassCastException: Cat cannot be cast to Dog
	at Ideone.main(Main.java:29)