Covariant Return Types

  • + 0 comments
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    //Complete the classes below
    class Flower {
        public String whatsYourName() {
            return "I have many names and types";
        }
    }
    
    class Jasmine extends Flower {
        @Override
        public String whatsYourName() {
            return "Jasmine";
        }
    }
    
    class Lily extends Flower {
        @Override
        public String whatsYourName() {
            return "Lily";
        }
    }
    
    class Region {
        public Flower yourNationalFlower() {
            return new Flower();
        }
    }
    
    class WestBengal extends Region {
        @Override
        public Flower yourNationalFlower() {
            return new Jasmine();
        }
    }
    
    class AndhraPradesh extends Region {
        @Override
        public Flower 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 = switch (s) {
                case "WestBengal" -> new WestBengal();
                case "AndhraPradesh" -> new AndhraPradesh();
                default -> new Region();
            };
            Flower flower = region.yourNationalFlower();
            System.out.println(flower.whatsYourName());
        }
    }