Part 3 Exam 2
public
allows all to access directly
protected
allows class in which defined and all its subclasses to access it directly
private
allows only class in which defined to access it directly
Method Overloading
Changes the header AND the body of the parent method in the subclass This you start from scratch, no super. give it the name of the parent but put things to call in it ex: public void print(String fileName) {
Which of the following classes should not inherit a class that defines an employee? a. Secretary c. SalaryWorkerb. Manager d. Person
Person, since person is not subset of employee, whereas the other three are different types of employees
Abstract class
A class that cannot be instantiated and defines instance fields and methods for subclasses. This is useful when we do not need objects of a generic class ex: public abstract double computeTotalScore(); so we put abstract after public, and end with a semicolon instead of brackets The compiler now forces you to use the class unless you override it in child classes
Which of the following statements are true. Select all that apply. Subclass inherits all the attributes from the superclass, including the private attributes Subclass inherits only the public attributes from the superclass Subclass inherits all the methods from the superclass, including the private methods Subclass inherits only the public methods from the superclass Subclass inherits all the public get and set methods from the superclass Subclass inherits the public constructors from the superclass
A, D, E Subclasses inherit parent class private attributes, public methods, and public get/set methods. Subclasses do not inherit any constructors or private methods.
Inheritance
Allows us to create a new class based on an existing class so we can reuse code. For example, if we want HS students and undergrad students, we could make two totally different classes for them, OR we could make a parent student class and then use inheritance to modify it for our needs
Characteristics of abstract class
An abstract class cannot be instantiated A class that contains abstract methods must be declared as abstract. However, it is possible to declare a class that contains no abstract methods as an abstract class All derived classes of an abstract class will have to provide body for all its abstract method(s), or they will have to be declared as abstract A subclass can be abstract even if its superclass is concrete.
Which of the following method declarations overrides this method? public double calculateMilesPerGallon(double speed){...} a. public double calculateMilesPerGallon(int speed){...} b. public double calculateMilesPerGallon(double s){...} c. public double calculateMilesPerGallon(double speed, int r){...} d. public int calculateMilesPerGallon(double speed){...}
B public double calculateMilesPerGallon(double s){...} Since it (presumably) uses super() then adds the double to it, instead of rewriting it altogether. it calls and builds, but does not replace and rewrite
What are the synonyms for parent class?
Base class, parent class, and super class
Which of the following method declarations overloads this method? Select all that apply. public double calculateMilesPerGallon(double speed){...} a. public double calculateMilesPerGallon(int speed){...} b. public double calculateMilesPerGallon(double s){...} c. public double calculateMilesPerGallon(double speed, int r){...} d. public int calculateMilesPerGallon(double speed){...}
C and A both overload it because it is rewriting it by including a new int that will be used in calculation, a new parameter. Overriding keeps the existing parameters
Method Overriding
Change method body in subclass without changing method header. This alternative version of the method replaces the one in the parent class. This gets the original info then you add to it Do this by naming the class the same as what you want to override, then doing the super ex: public void print(){ super.print() then replace}
If a class contains an abstract method: A. you cannot create an instance of the class B. the abstract method will have only a header, but not a body, and end with a semicolon C. The class must be declared as abstract D. All of the above
D. All of the above are true. A class must be declared abstract, an abstract method will have only a header but not body and ends with a semicolon, and you cannot create an instance of the class
What are the synonyms for child class?
Derived class, child class, and sub class
An abstract class must have at least one abstract method.
False, abstract classes do not need abstract methods but abstract methods need abstract classes. Also, child classes can be abstract with non-abstract parents and vice-verse
All methods in an abstract class are abstract methods.
False, there doesn't even have to be abstract methods in it.
The following code gives compiler error. What modification would you have to make to the Student class code for it to compile without errors? public abstract class Person { private String name; public void setName(String name){ this.name = name} public abstract String m(); } public class Student extends Person { private double gpa; }
Have to override the abstract String method from the parent class to compile OR declare it to be abstract
The following code gives compiler error. What modification would you have to make to this code for it to compile without errors? public class Person { private String name; public void setName(String name){ this.name = name } public abstract String m(); }
class needs to be abstract to use an abstract method fixed code: public abstract class Person { private String name; public void setName(String name){ this.name = name } public abstract String m(); }
super
first statement in a method to call the parent class constructor. It automatically passes "name" from the parent class into the new method!
When a concrete i.e. a non-abstarct subclass extends an abstract class: it must override all the methods it has inherited from the abstract class it must override all the abstract methods inherited from the abstract class it must override all the non-abstract methods inherited from the abstract class it can not override any of the the methods inherited fron the abstract
it must override all the abstract methods inherited from the abstract class
Subclasses can...
just override an inherited method just overload an inherited method both overload and override an inherited method neither override nor overload an inherited method
Which of the following statements declares Salaried as a subclass of PayType? public class Salaried extends PayType public class Salaried inherits PayType public class PayType extends Salaried public class PayType inherits Salaried
public class Salaried extends PayType
extends
put at the top of the subclass to join it to the parent class. with it, we can now call code from the parent.
subclass
the child of the parent class, declared with extends and super. subclasses inherit all attributes, including private attributes, as well as all public methods EXCEPT FOR CONSTRUCTORS. private methods are not inherited