First : using a Scanner to get an input from the external world in a constructor is a terrible idea.
Second : the constructor in Student calls the constructor in Name that takes no parameters since there is no explicit call to super(). If you want to avoid that :
public Student(String firstName, String lastName)
{
super(firstName, lastName);
}
If you don't explicitly call a super constructor from the subclass, it implicitly calls the super constructor that takes no arguments.
To make it more clear, when you write
public Student(String firstName, String lastName)
{
this.firstName = firstName;
this.lastName = lastName;
}
you are in fact doing :
public Student(String firstName, String lastName)
{
super();
this.firstName = firstName;
this.lastName = lastName;
}