Method OverridingLook at the code given below for the School and University classes.class School { protected String name; protected int numStudents; public School(String name, int numStudents) { this.name = name; this.numStudents = numStudents; } public String getName() { return this.name; } public int getNumStudents() { return this.numStudents; }}class University extends School { private final String type = "University"; private boolean isPublic; public University(String name, int numStudents, boolean isPublic) { super(name,numStudents); this.isPublic = isPublic; } public boolean getIsPublic() { return this.isPublic; } public String getName() { return super.getName() + " " + type; } public int getNumStudents(){ return super.getNumStudents(); }}If you create a University object called ‘univ’ (short for university) and call the getName() method on the univ object, which getName() method will be called?Note: Look at the code closely; the getName() method is defined in both the School and University classes.getName() method of the School classgetName() method of the University class
Question
Method OverridingLook at the code given below for the School and University classes.class School { protected String name; protected int numStudents; public School(String name, int numStudents) { this.name = name; this.numStudents = numStudents; } public String getName() { return this.name; } public int getNumStudents() { return this.numStudents; }}class University extends School { private final String type = "University"; private boolean isPublic; public University(String name, int numStudents, boolean isPublic) { super(name,numStudents); this.isPublic = isPublic; } public boolean getIsPublic() { return this.isPublic; } public String getName() { return super.getName() + " " + type; } public int getNumStudents(){ return super.getNumStudents(); }}If you create a University object called ‘univ’ (short for university) and call the getName() method on the univ object, which getName() method will be called?Note: Look at the code closely; the getName() method is defined in both the School and University classes.getName() method of the School classgetName() method of the University class
Solution
The getName() method of the University class will be called. This is because the University class overrides the getName() method of the School class. When a method is overridden, the method in the subclass (in this case, University) is the one that is called, not the method in the superclass (School).
Similar Questions
DebuggingLook at the code for the School and University classes given below. There is an error in the constructor for the University class. Can you identify the error?class School { private String name; private int numStudents; public School(String name, int numStudents) { this.name = name; this.numStudents = numStudents; } public String getName() { return this.name; } public int getNumStudents() { return this.numStudents; }}class University extends School { private final String type = "University"; private boolean isPublic; public University(String name, int numStudents, boolean isPublic) { this.name = name; this.numStudents = numStudents; this.isPublic = isPublic; } public boolean getIsPublic() { return this.isPublic; }}
Fixing Error(s)In the above question, you identified the error(s) in the constructor for the University class which is a part of the code given below. How will you now fix the error(s)?class University extends School { private final String type = "University"; private boolean isPublic; public University(String name, int numStudents, boolean isPublic) { this.name = name; this.numStudents = numStudents; this.isPublic = isPublic; } public boolean getIsPublic() { return this.isPublic; }}
Method OverridingIn the previous question, you must have chosen either getName() of the School class or getName() of the University class. Can you explain the reason behind your choice?
You have a class Student:public class Student { public int studentId; public String studentName; public String studentGrade; public Student() { studentId = 1; studentName = null; studentGrade = "1st"; }}You have a child class CollegeStudent:public class CollegeStudent extends Student {}Then you execute the following snippet of code:CollegeStudent myCollegeStudent = new CollegeStudent();System.out.println(myCollegeStudent.studentName);What will be returned by this code?Instruction: Choose the option that best answers the question. Answer ChoicesAn exception will be thrown indicating there is no studentName variable in the CollegeStudent derived classAn exception will be thrown indicating that the studentName variable is not accessible in the derived class CollegeStudentfalsenull
You have a class Student:public class Student{ public int studentId; public String studentName; public String studentGrade; public Student() { } public Student(int studentId, String studentName, String studentGrade){ this.studentId = studentId; this.studentName = studentName; this.studentGrade = studentGrade; }}You have a child class CollegeStudent:public class CollegeStudent extends Student {}Then you execute the following snippet of code:CollegeStudent myCollegeStudent = new CollegeStudent(1, "Alice", "3rd");What is the error in this snippet of code?Instruction: Choose the option that best answers the question. Answer ChoicesYou cannot specify multiple constructors for the parent class, though this is allowed in child classesYou cannot use the parameterized constructor in the base class to instantiate the CollegeStudent derived classYou need to have additional constructors in the base class to support the instantiation of the CollegeStudent derived classYou have to use the “object” keyword to create an object of a derived class
Upgrade your grade with Knowee
Get personalized homework help. Review tough concepts in more detail, or go deeper into your topic by exploring other relevant questions.