// Parent class
class Animal {
int age;
public Animal
(String name,
int age
) { this.name = name;
this.age = age;
}
public void eat() {
System.
out.
println(name
+ " is eating."); }
public void sleep() {
System.
out.
println(name
+ " is sleeping."); }
}
// Child class inheriting from Animal
class Dog extends Animal {
super(name, age); // Invoke superclass constructor
this.breed = breed;
}
public void bark() {
System.
out.
println(name
+ " is barking."); }
}
// Another child class inheriting from Animal
class Cat extends Animal {
super(name, age); // Invoke superclass constructor
this.color = color;
}
public void meow() {
System.
out.
println(name
+ " is meowing."); }
}
public class Main {
public static void main
(String[] args
) { // Creating instances of Dog and Cat
Dog dog = new Dog("Buddy", 3, "Labrador");
Cat cat = new Cat("Whiskers", 2, "White");
// Calling methods from parent class
dog.eat(); // Inherited method
cat.sleep(); // Inherited method
// Calling methods specific to child class
dog.bark();
cat.meow();
// Accessing fields
System.
out.
println("Dog's breed: " + dog.
breed); System.
out.
println("Cat's color: " + cat.
color); }
}
Ly8gUGFyZW50IGNsYXNzCmNsYXNzIEFuaW1hbCB7CiAgICBTdHJpbmcgbmFtZTsKICAgIGludCBhZ2U7CgogICAgcHVibGljIEFuaW1hbChTdHJpbmcgbmFtZSwgaW50IGFnZSkgewogICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CiAgICAgICAgdGhpcy5hZ2UgPSBhZ2U7CiAgICB9CgogICAgcHVibGljIHZvaWQgZWF0KCkgewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuYW1lICsgIiBpcyBlYXRpbmcuIik7CiAgICB9CgogICAgcHVibGljIHZvaWQgc2xlZXAoKSB7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5hbWUgKyAiIGlzIHNsZWVwaW5nLiIpOwogICAgfQp9CgovLyBDaGlsZCBjbGFzcyBpbmhlcml0aW5nIGZyb20gQW5pbWFsCmNsYXNzIERvZyBleHRlbmRzIEFuaW1hbCB7CiAgICBTdHJpbmcgYnJlZWQ7CgogICAgcHVibGljIERvZyhTdHJpbmcgbmFtZSwgaW50IGFnZSwgU3RyaW5nIGJyZWVkKSB7CiAgICAgICAgc3VwZXIobmFtZSwgYWdlKTsgLy8gSW52b2tlIHN1cGVyY2xhc3MgY29uc3RydWN0b3IKICAgICAgICB0aGlzLmJyZWVkID0gYnJlZWQ7CiAgICB9CgogICAgcHVibGljIHZvaWQgYmFyaygpIHsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmFtZSArICIgaXMgYmFya2luZy4iKTsKICAgIH0KfQoKLy8gQW5vdGhlciBjaGlsZCBjbGFzcyBpbmhlcml0aW5nIGZyb20gQW5pbWFsCmNsYXNzIENhdCBleHRlbmRzIEFuaW1hbCB7CiAgICBTdHJpbmcgY29sb3I7CgogICAgcHVibGljIENhdChTdHJpbmcgbmFtZSwgaW50IGFnZSwgU3RyaW5nIGNvbG9yKSB7CiAgICAgICAgc3VwZXIobmFtZSwgYWdlKTsgLy8gSW52b2tlIHN1cGVyY2xhc3MgY29uc3RydWN0b3IKICAgICAgICB0aGlzLmNvbG9yID0gY29sb3I7CiAgICB9CgogICAgcHVibGljIHZvaWQgbWVvdygpIHsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obmFtZSArICIgaXMgbWVvd2luZy4iKTsKICAgIH0KfQoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIC8vIENyZWF0aW5nIGluc3RhbmNlcyBvZiBEb2cgYW5kIENhdAogICAgICAgIERvZyBkb2cgPSBuZXcgRG9nKCJCdWRkeSIsIDMsICJMYWJyYWRvciIpOwogICAgICAgIENhdCBjYXQgPSBuZXcgQ2F0KCJXaGlza2VycyIsIDIsICJXaGl0ZSIpOwoKICAgICAgICAvLyBDYWxsaW5nIG1ldGhvZHMgZnJvbSBwYXJlbnQgY2xhc3MKICAgICAgICBkb2cuZWF0KCk7ICAvLyBJbmhlcml0ZWQgbWV0aG9kCiAgICAgICAgY2F0LnNsZWVwKCk7IC8vIEluaGVyaXRlZCBtZXRob2QKCiAgICAgICAgLy8gQ2FsbGluZyBtZXRob2RzIHNwZWNpZmljIHRvIGNoaWxkIGNsYXNzCiAgICAgICAgZG9nLmJhcmsoKTsKICAgICAgICBjYXQubWVvdygpOwoKICAgICAgICAvLyBBY2Nlc3NpbmcgZmllbGRzCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJEb2cncyBicmVlZDogIiArIGRvZy5icmVlZCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDYXQncyBjb2xvcjogIiArIGNhdC5jb2xvcik7CiAgICB9Cn0K