// Base class Person
class Person {
// Method that displays the
// role of a person
void role() {
System.
out.
println("I am a person."); }
}
// Derived class Father that
// overrides the role method
class Father extends Person {
// Overridden method to show
// the role of a father
@Override
void role() {
System.
out.
println("I am a father."); }
}
public class Main {
public static void main
(String[] args
) {
// Creating a reference of type Person
// but initializing it with Father class object
Person p = new Father();
// Calling the role method. It calls the
// overridden version in Father class
p.role();
}
}
Ly8gQmFzZSBjbGFzcyBQZXJzb24KY2xhc3MgUGVyc29uIHsKICAKICAgIC8vIE1ldGhvZCB0aGF0IGRpc3BsYXlzIHRoZSAKICAgIC8vIHJvbGUgb2YgYSBwZXJzb24KICAgIHZvaWQgcm9sZSgpIHsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkkgYW0gYSBwZXJzb24uIik7CiAgICB9Cn0KCi8vIERlcml2ZWQgY2xhc3MgRmF0aGVyIHRoYXQgCi8vIG92ZXJyaWRlcyB0aGUgcm9sZSBtZXRob2QKY2xhc3MgRmF0aGVyIGV4dGVuZHMgUGVyc29uIHsKICAKICAgIC8vIE92ZXJyaWRkZW4gbWV0aG9kIHRvIHNob3cgCiAgICAvLyB0aGUgcm9sZSBvZiBhIGZhdGhlcgogICAgQE92ZXJyaWRlCiAgICB2b2lkIHJvbGUoKSB7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJJIGFtIGEgZmF0aGVyLiIpOwogICAgfQp9CgpwdWJsaWMgY2xhc3MgTWFpbiB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgIAogICAgICAgIC8vIENyZWF0aW5nIGEgcmVmZXJlbmNlIG9mIHR5cGUgUGVyc29uIAogICAgICAgIC8vIGJ1dCBpbml0aWFsaXppbmcgaXQgd2l0aCBGYXRoZXIgY2xhc3Mgb2JqZWN0CiAgICAgICAgUGVyc29uIHAgPSBuZXcgRmF0aGVyKCk7CiAgICAgICAgCiAgICAgICAgLy8gQ2FsbGluZyB0aGUgcm9sZSBtZXRob2QuIEl0IGNhbGxzIHRoZSAKICAgICAgICAvLyBvdmVycmlkZGVuIHZlcnNpb24gaW4gRmF0aGVyIGNsYXNzCiAgICAgICAgcC5yb2xlKCk7ICAKICAgIH0KfQ==