Knowee
Questions
Features
Study Tools

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; }}

Question

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; }}

...expand
🧐 Not the exact question you are looking for?Go ask a question

Solution

The error in the constructor for the University class is that it's trying to directly access and assign values to the 'name' and 'numStudents' fields which are declared as private in the superclass 'School'. In Java, private members are not inherited by subclasses and cannot be accessed directly from the subclass.

Here's how you can correct it:

public University(String name, int numStudents, boolean isPublic) {
    super(name, numStudents); // Call the constructor of the superclass 'School'
    this.isPublic = isPublic;
}

In this corrected version, the 'super(name, numStudents)' statement is used to call the constructor of the superclass 'School', which correctly initializes the 'name' and 'numStudents' fields.

This problem has been solved

Similar Questions

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 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

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

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 { public CollegeStudent(int studentId, String studentName, String studentGrade){ System.out.println("This constructor uses the super keyword"); super(studentId, studentName, studentGrade); }}What is the error in the definition of the constructor in CollegeStudent?Instruction: Choose the option that best answers the question. Answer ChoicesYou have to use the super() method in the first line of the constructor bodyDerived classes cannot invoke constructors that are part of the parent classYou have to use the base() method to invoke the constructor of the superclassYou must use the modifier “constructor” to define constructors

1/3

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.