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
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.