Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

public class Undergraduate extends Student { private int level; //1 for freshman

ID: 3919153 • Letter: P

Question

public class Undergraduate extends Student
{
    private int level; //1 for freshman, 2 for sophomore,
                       //3 for junior, or 4 for senior.
    public Undergraduate( )
    {
        super( );
        level = 1;
    }
  
    public Undergraduate(String initialName, int initialStudentNumber,
                         int initialLevel)
    {
        super(initialName, initialStudentNumber);
        setLevel(initialLevel); //Checks 1 <= initialLevel <= 4
    }
  
    public void reset(String newName, int newStudentNumber,
                      int newLevel)
    {
        reset(newName, newStudentNumber); //StudentÕs reset
        setLevel(newLevel); //Checks 1 <= newLevel <= 4
    }
  
    public int getLevel( )
    {
        return level;
    }
  
    public void setLevel(int newLevel)
    {
        if ((1 <= newLevel) && (newLevel <= 4))
            level = newLevel;
        else
        {
            System.out.println("Illegal level!");
            System.exit(0);
        }
    }
  
    public void writeOutput( )
    {
        super.writeOutput( );
        System.out.println("Student Level: " + level);
    }

    public boolean equals(Undergraduate otherUndergraduate)
    {
        return equals((Student)otherUndergraduate) &&
               (this.level == otherUndergraduate.level);
    }
/* // Alternate version
    public boolean equals(Undergraduate otherUndergraduate)
    {
        return super.equals(otherUndergraduate) &&
               (this.level == otherUndergraduate.level);
    }
*/  
}


In class Undergraduate how many statements invoke the base's methods (do not count comstructors)? Explain

Explanation / Answer

In class Undergraduate how many statements invoke the base's methods (do not count comstructors)? Explain

Answer:

In class Undergraduate 3 (Three) statements invoke the base's methods excluding constructors.

1) public void reset(String newName, int newStudentNumber,
                      int newLevel)
    {
       reset(newName, newStudentNumber); // First invoke to base method
        setLevel(newLevel); //Checks 1 <= newLevel <= 4
    }

The statement, reset(newName, newStudentNumber); in reset function definition of undergraduate class invokes the reset function/method of Student class.

In this case, super keyword is not used to invoke base method. because, the reset function of undergraduate class has 3 parameteres, but in base method reset(), it has only 2 parameters. So, calling without super is allowed to invoke base method (when 2 parameters are passed).

-------------------------------------------------------------------------------------------------------------------------------------

2) public void writeOutput( )
    {
        super.writeOutput( ); //second invoke to base class method
        System.out.println("Student Level: " + level);
    }

In the above function definition, as you can see super keyword is used to invoke base method writeOutput().

Super keyword is used, because method has same name (& even parameter signature) writeOutput() both in base class and undergraduate class. Derived class method always override Base class method.

So, To invoke Base method writeOutput, super.writeOutput() is used.

------------------------------------------------------------------------------------------------------------------------------------

3) /* // Alternate version
    public boolean equals(Undergraduate otherUndergraduate)
    {
        return super.equals(otherUndergraduate) &&
               (this.level == otherUndergraduate.level); //Third invoke to Base method
    }
*/  

In the above function definition, third invoke is done to base method equals().

super.equals() will invoke the equals() of Student class(Base class).

---------------------------------------------------------------------------------------------------------------------------------------

Please upvote if you are happy with the answer