If a constructor does not explicitly invoke a superclass constructor, the
Java compiler automatically inserts a call to the no-argument constructor of the superclass. If the super class does not have a no-argument constructor, you will get a compile-time error. Object does have such a constructor, so if Object is the only superclass, there is no problem.
your code works like this
1.new Faculty() calls - > public Faculty() constructor in the same class
2.public Faculty() calls super("Faculty") - > which calls the method public Employee(
String s){ ..} in the Employee class
3.Since each constructor has super() as its first line (compiler insert super() call if you dont call super() from your constructor explicitly) public Employee(String s){..} calls -> super() which is public Person(){..}
4. public Person() prints "(1) Person's no-args constructor is invoked"
5.control then comes to the caller method public Employee(String s){..} which prints "Faculty"
6.control then comes to the caller method of public Employee(String s){..} which is public Faculty(){ ...} which prints "(4) Faculty's no argument constructor is invoked"
Please refer :
http://docs.oracle.com/javase/tutorial/java/IandI/super.html
for further clarifications