HackerRank Java- Covariant Return Types
You will be given a partially completed code in the editor where the main method takes the name of a state (i.e., WestBengal, or AndhraPradesh) and prints the national flower of that state using the classes and methods written by you.
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
-
- class Flower {
- String whatsYourName() {
- return "I have many names and types.";
- }
- }
-
- class Jasmine extends Flower {
- @Override
- String whatsYourName() {
- return "Jasmine";
- }
- }
-
- class Lily extends Flower {
- @Override
- String whatsYourName() {
- return "Lily";
- }
- }
-
- class Region {
- Flower yourNationalFlower() {
- return new Flower();
- }
- }
-
- class WestBengal extends Region {
- @Override
- Jasmine yourNationalFlower() {
- return new Jasmine();
- }
- }
-
- class AndhraPradesh extends Region {
- @Override
- Lily yourNationalFlower() {
- return new Lily();
- }
- }
-
-
- public class Solution {
- public static void main(String[] args) throws IOException {
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- String s = reader.readLine().trim();
- Region region = null;
- switch (s) {
- case "WestBengal":
- region = new WestBengal();
- break;
- case "AndhraPradesh":
- region = new AndhraPradesh();
- break;
- }
- Flower flower = region.yourNationalFlower();
- System.out.println(flower.whatsYourName());
- }
- }