/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
Animal animal1 = new Cat() ;
animal1.speak() ;
System.
out.
println( animal1.
getClass().
getName() ) ;
Animal animal2 = new Dog() ;
animal2.speak() ;
System.
out.
println( animal2.
getClass().
getName() ) ;
Animal animal3 = new Chihuahua() ;
animal3.speak() ;
System.
out.
println( animal3.
getClass().
getName() ) ; }
}
interface Animal {
public void speak() ;
}
class Dog implements Animal {
@Override
public void speak() {
System.
out.
println( "Bark." ) ; }
}
class Chihuahua extends Dog {
@Override
public void speak() {
System.
out.
println( "Yip." ) ; }
}
class Cat implements Animal {
@Override
public void speak() {
System.
out.
println( "Meow." ) ; }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCUFuaW1hbCBhbmltYWwxID0gbmV3IENhdCgpIDsKCQlhbmltYWwxLnNwZWFrKCkgOwoJCVN5c3RlbS5vdXQucHJpbnRsbiggYW5pbWFsMS5nZXRDbGFzcygpLmdldE5hbWUoKSApIDsKCQkKCQlBbmltYWwgYW5pbWFsMiA9IG5ldyBEb2coKSA7CgkJYW5pbWFsMi5zcGVhaygpIDsKCQlTeXN0ZW0ub3V0LnByaW50bG4oIGFuaW1hbDIuZ2V0Q2xhc3MoKS5nZXROYW1lKCkgKSA7CgkJCgkJQW5pbWFsIGFuaW1hbDMgPSBuZXcgQ2hpaHVhaHVhKCkgOwoJCWFuaW1hbDMuc3BlYWsoKSA7CgkJU3lzdGVtLm91dC5wcmludGxuKCBhbmltYWwzLmdldENsYXNzKCkuZ2V0TmFtZSgpICkgOwoJfQp9CgppbnRlcmZhY2UgQW5pbWFsIHsKCXB1YmxpYyB2b2lkIHNwZWFrKCkgOwp9CgpjbGFzcyBEb2cgaW1wbGVtZW50cyBBbmltYWwgewoJQE92ZXJyaWRlCglwdWJsaWMgdm9pZCBzcGVhaygpIHsKCQlTeXN0ZW0ub3V0LnByaW50bG4oICJCYXJrLiIgKSA7Cgl9Cn0KCmNsYXNzIENoaWh1YWh1YSBleHRlbmRzIERvZyB7CglAT3ZlcnJpZGUKCXB1YmxpYyB2b2lkIHNwZWFrKCkgewoJCVN5c3RlbS5vdXQucHJpbnRsbiggIllpcC4iICkgOwoJfQp9CgoKY2xhc3MgQ2F0IGltcGxlbWVudHMgQW5pbWFsIHsKCUBPdmVycmlkZQoJcHVibGljIHZvaWQgc3BlYWsoKSB7CgkJU3lzdGVtLm91dC5wcmludGxuKCAiTWVvdy4iICkgOwoJfQp9