Problem 1. (6 points) Quickies.
a. Another name for static fields is class variables.
b. Advantages of a linked list over an array (any one will suffice):
c. Advantages of an array over a linked list (any one will suffice):
d. Yes. myMethod can be overloaded by a second implementation of myMethod in MyClass that has a different signature. myMethod can be overrided by a third implementation of myMethod in a subclass of MyClass that has the same signature.
Problem 2. (8 points) Inheritance.
a. m returns 5
b. int i = ((XPlus) x).r();
c. return super.m();
d. The very last line of code causes a compile-time error. All the other lines compile and run without incident.
Problem 3. (5 points) Lists made of cons cells.
public static void main(String[] args) {
Cons v = new Cons();
v.cdr = new Cons();
v.cdr.cdr = new Cons();
v.cdr.cdr.cdr = v.cdr;
v.car = 2;
v.cdr.car = 3;
v.cdr.cdr.car = 9;
}
Problem 4. (6 points) Loops made of cons cells.
public void breakLoop() {
if (cdr != null) {
if (cdr.car == -1) {
cdr = null;
} else {
int i = car;
car = -1;
cdr.breakLoop();
car = i;
}
}
}
Extra credit bonus point:
Create a special Cons cell named dummyCons,
which is not part of any list.
Instead of marking Cons cells by setting car to -1,
mark them by setting cdr to dummyCons.