Here parent means either mother/father..we can use that constructor like this.but giving compilation error as "cannot find symbol parent".can anyone explain plz.. My code as: public class Solution { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String GrandfatherName = reader.readLine(); Cat catGrandFather = new Cat(GrandfatherName); String GrandmotherName = reader.readLine(); Cat catGrandMother = new Cat(GrandmotherName); String fatherName = reader.readLine(); Cat catFather = new Cat(fatherName,catGrandFather); String motherName = reader.readLine(); Cat catMother = new Cat(motherName,catGrandMother); String sonName = reader.readLine(); Cat catSon = new Cat(sonName,catMother,catFather); String daughterName = reader.readLine(); Cat catDaughter = new Cat(daughterName, catMother,CatFather); System.out.println(catMother); System.out.println(catDaughter); } public static class Cat { private String name; private Cat mother; private Cat father; Cat(String name) { this.name = name; } Cat(String name,Cat parent) { this.name = name; this.parent = parent; } Cat(String name, Cat mother,Cat father) { this.name = name; this.mother = mother; this.father = father; } @Override public String toString() { if (parent == null && father == null) return "The cat's name is " + name + ", no mother , no father "; else if ((parent == null) && (father != null)) return "The cat's name is " + name + ", no mother, " + father.name + " is the father"; else if ((parent != null) && (father == null)) return "The cat's name is " + name + ", " + parent.name + " is the mother, no father"; else if ((parent != null) && (father != null)) return "The cat's name is " + name + ", " + parent.name + " is the mother, " + father.name + " is the father"; } } }